1 public class EmailConfig
2 {
3 public static readonly string ServerAddress = ConfigurationManager.AppSettings["ServerAddress"];
4 public static readonly string ServerUserName = ConfigurationManager.AppSettings["ServerUserName"];
5 public static readonly string ServerUserPass = ConfigurationManager.AppSettings["ServerUserPass"];
6 public static readonly string ServerPort = ConfigurationManager.AppSettings["ServerPort"];
7 public static readonly string Authentication = ConfigurationManager.AppSettings["Authentication"];
8 public static readonly string Sender = ConfigurationManager.AppSettings["Sender"];
9
10 }
11
12 public class EmailExten
13 {
14 /// <summary>
15 /// 日志
16 /// </summary>
17 public static readonly ILog Log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
18
19
20 #region 邮件发送组件
21 /// <summary>
22 /// 发送邮件 Created by ZhangQC 2016.08.23
23 /// </summary>
24 /// <param name="recipient">收件人</param>
25 /// <param name="subject">主题</param>
26 /// <param name="body">正文</param>
27 /// <param name="isBodyHtml">指示邮件正文是否为html</param>
28 /// <param name="encoding">编码</param>
29 /// <param name="isAuthentication">是否需要凭证</param>
30 /// <param name="files">附件</param>
31 static void Send(string recipient, string subject, string body, bool isBodyHtml, Encoding encoding, bool isAuthentication, params string[] files)
32 {
33 //初始化邮件发送
34 var smtpClient = new SmtpClient
35 {
36 Host = EmailConfig.ServerAddress,
37 Port = EmailConfig.ServerPort.ToInt(),
38 Timeout = 3000,
39 EnableSsl=true
40 };
41 //初始化消息
42 var message = new MailMessage(EmailConfig.Sender, recipient)
43 {
44 IsBodyHtml = isBodyHtml,
45 SubjectEncoding = encoding,
46 BodyEncoding = encoding,
47 Subject = subject,
48 Body = body
49 };
50 //增加附件
51 message.Attachments.Clear();
52 if (files != null && files.Length != 0)
53 {
54 for (int i = 0; i < files.Length; ++i)
55 {
56 var attach = new Attachment(files[i]);
57 message.Attachments.Add(attach);
58 }
59 }
60 //用户名密码
61 if (isAuthentication)
62 {
63 smtpClient.Credentials = new NetworkCredential(EmailConfig.ServerUserName, EmailConfig.ServerUserPass);
64 }
65
66
67 //发送完成回调
68 smtpClient.SendCompleted += new SendCompletedEventHandler(SmtpClientSendCompleted);
69 //object mailSendState = message;
70 //smtpClient.SendAsync(message, mailSendState);
71 //smtpClient.SendAsync(message,"ok");
72 smtpClient.Send(message);
73
74
75 }
76
77 /// <summary>
78 /// 发送回调
79 /// </summary>
80 /// <param name="sender"></param>
81 /// <param name="e"></param>
82 static void SmtpClientSendCompleted(object sender, AsyncCompletedEventArgs e)
83 {
84 bool mailSent = true;
85 string state = (string)e.UserState;
86
87 if (e.Cancelled)
88 {
89 mailSent = false;
90 }
91 if (e.Error != null)
92 {
93 mailSent = false;
94 }
95
96 }
97
98 /// <summary>
99 /// 邮件发送 Created by ZhangQC 2016.08.23
100 /// </summary>
101 /// <param name="recipient">收件人</param>
102 /// <param name="subject">主题</param>
103 /// <param name="body">内容</param>
104 public static bool Send(string recipient, string subject, string body)
105 {
106 if (string.IsNullOrEmpty(recipient))
107 return false;
108 try
109 {
110 Send(recipient, subject, body, true, Encoding.UTF8, true, null);
111 return true;
112 }
113 catch (Exception ex)
114 {
115 Log.ErrorFormat("邮件发送失败:{0}",ex);
116 return false;
117 }
118 }
119
120 static void Send(string recipient, string sender, string subject, string body)
121 {
122 if (string.IsNullOrEmpty(recipient))
123 return;
124
125 Send(recipient, subject, body, true, Encoding.UTF8, true, null);
126 }
127 #endregion
128 }