C#邮件发送

近来,在项目的后台管理部分开发了一个邮件群发的模块,故将核心的邮件发送代码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:  
posted @ 2012-09-13 10:39  美梦成真  阅读(1047)  评论(0编辑  收藏  举报