现在的位置: 首页 > 综合 > 正文

C#邮件发送

2012年05月14日 ⁄ 综合 ⁄ 共 2490字 ⁄ 字号 评论关闭

近来,在项目的后台管理部分开发了一个邮件群发的模块,故将核心的邮件发送代码mark一下。在C#中使用SmtpClient对象通过SMTP传送邮件信息的示例如下:

   1: public static bool Send(string host, string from, string fromPassword, string fromDisplayName,

   2:            List<ToMailAddress> toMailAddress, string subject, string body, out string desc, params string[] attachmentFileNames)

   3:        {

   4:            if (toMailAddress == null ||

   5:                toMailAddress.Count == 0)

   6:            {

   7:                desc = "收件人邮箱地址为空";

   8:                return false;

   9:            }

  10:            try

  11:            {

  12:  

  13:               //使用了SmtpClient的一个实例,在这个例子中还提供了host地址(SMTP服务器的主机),SMTP服务器用来在Internet上发送邮件信息。还可以使用Host属性完成相同的任务。下面第一句的代码等价于SmtpClient smtpClient=new SmtpClient();smtpClient.Host=host;

  14:                SmtpClient smtpClient = new SmtpClient(host);

  15:  

  16:               //设置同步 Send 调用的超时时间,单位是毫秒,默认值是100 000(100毫秒)

  17:                smtpClient.Timeout = 60000;

  18:  

  19:               //有些 SMTP 服务器要求在代表客户端发送电子邮件前验证客户端的身份。UseDefaultCredentials属性设置为true,SmtpClient对象应该使用当前登录用户的默认凭据进行身份验证(如果服务器要求)。UseDefaultCredentials属性设置为 false,则连接到服务器时会将 Credentials 属性中设置的值用作凭据

  20:               //如果 UseDefaultCredentials 属性设置为 false 并且尚未设置 Credentials 属性,则将邮件以匿名方式发送到服务器。

  21:                smtpClient.UseDefaultCredentials = true;

  22:  

  23:               //获取或设置用于验证发件人身份的凭据。 

  24:                smtpClient.Credentials = new NetworkCredential(from, fromPassword);

  25:  

  26:               //指定如何处理待发的电子邮件。 

  27:                smtpClient.DeliveryMethod = SmtpDeliveryMethod.Network;

  28:  

  29:               //获取或设置用于 SMTP 事务的端口。

  30:                //smtpClient.Port = 25;

  31:  

  32:                //指定 SmtpClient 是否使用安全套接字层 (SSL) 加密连接

  33:                //smtpClient.EnableSsl = true;

  34:                

  35:                //MailMessage 类的实例用于构造可使用 SmtpClient 类传输到 SMTP 服务器以便传递的电子邮件

  36:                MailMessage message = new MailMessage();

  37:  

  38:                //指定邮件主题编码格式

  39:                message.SubjectEncoding = Encoding.UTF8;

  40:  

  41:                //指定邮件内容编码格式

  42:                message.BodyEncoding = Encoding.UTF8;

  43:                //message.From = new MailAddress(from, fromDisplayName, Encoding.UTF8); //.net4以前版本使用

  44:  

  45:                //发件人

  46:                message.From = new MailAddress(from);

  47:                //message.Sender = new MailAddress(from, fromDisplayName);

  48:  

  49:                //指示邮件正文是否为 Html 格式的值。如果邮件正文为 Html 格式,则为 true;否则为 false。 默认值为 false。 

  50:                message.IsBodyHtml = true;

  51:  

  52:               //主题

  53:                message.Subject = subject;

  54:  

  55:               //正文

  56:                message.Body = body;

  57:  

  58:               //设置此电子邮件的优先级 

  59:                message.Priority = MailPriority.Normal;

  60:  

  61:              //设置邮件的接收地址

  62:                SetToMailAddress(toMailAddress, message);

  63:               

  64:              //设置邮件附件

  65:               // SetAttachments(attachmentFileNames, message);

  66:              

  67:              //同步发送邮件

  68:                smtpClient.Send(message);

  69:  

  70:              //异步发送邮件

  71:                //smtpClient.SendAsync(message, null);

  72:         

  73:             //发送完,释放smtpClient对象

  74:                smtpClient.Dispose();

  75:                desc = "发送成功";

  76:                return true;

  77:            }

  78:            catch (Exception ex)

  79:            {

  80:                desc = ex.Message;

  81:                return false;

  82:            }

  83:        }

  84:  

  85:        private static void SetToMailAddress(List<ToMailAddress> toMailAddress, MailMessage message)

  86:        {

  87:            toMailAddress.ForEach(mailAddr =>

  88:                message.To.Add(new MailAddress(mailAddr.Address, mailAddr.DisplayName, Encoding.Default)));

  89:  

  90:        }

  91:  

抱歉!评论已关闭.