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: