邮件发送协议为SMTP,然而传统的SMTP协议对于反垃圾邮件做的不是很好,所以在原有的基础上建立了ESMTP(External SMTP)协议,能够进行基于用户账户登录的权限管理。下面以基于ESMTP的用户验证来实现C#群发邮件
强大的.net类库已经为我们封装好了SMTP协议, 位于System.Net.Mail命名空间之下。
主要类:SmtpClient 使用SMTP协议进行发送邮件,
MailMessage 封装一个邮件,包括发件人地址,收件人地址,SMTP服务器地址等常用设置。
System.Net.NetworkCredential封装用户的用户名和密码,验证凭据类。
MailAddress 邮件地址,发件人或者收件人地址
首先,使用初始化SmtpClient的一些基本设置
smtpClient.Host = "smtp.xx.com"; //设置smtp服务器地址,xx代表服务器提供商 smtpClient.Port = 25; //smtp服务器端口号 smtpClient.EnableSsl = false; //是否使用SSL加密 smtpClient.UseDefaultCredentials = false; smtpClient.Credentials = new NetworkCredential("用户名","密码"); //发件人账户和密码,即是用户凭证 smtpClient.DeliveryMethod = SmtpDeliveryMethod.Network; //传输方式
再次,构建要发送的邮件内容
mailMessage.From = new MailAddress("发件人地址"); //收件人地址十一mailAddressCollection容器,也为群发邮件提供了便利,不断Add收件人地址就可以了 mailMessage.To.Add(new MailAddress("收件人地址")); mailMessage.Subject = "邮件主题"; mailMessage.Body = "邮件正文";
最后,发送邮件
// SmtpClient提供了两个发送函数,一个同步发送Send、一个异步发送SendAsync。不过这个异步发送不是有保证,经常发布出去 smtpClient.Send(mailMessage);