发邮件

    /// <summary>
    /// 邮件实体
    /// </summary>
    public class EmailModel
    {
        /// <summary>
        /// 名称
        /// </summary>
        public string Name { get; set; }
        /// <summary>
        /// 编码
        /// </summary>
        public string Encode { get; set; }
        /// <summary>
        /// 服务器地址
        /// </summary>
        public string IP { get; set; }
        /// <summary>
        /// 账户
        /// </summary>
        public string Identity { get; set; }
        /// <summary>
        /// 密码
        /// </summary>
        public string Password { get; set; }
    }
 1     /// <summary>
 2     /// 邮件服务缓存
 3     /// </summary>
 4     public class Email_Singleton 
 5     {
 6         private static List<EmailModel> instance=null;
 7         private static int index;
 8 
 9         private Email_Singleton()
10         { }
11 
12         public static EmailModel GetEmailModel()
13         {
14             EmailModel result = new EmailModel();
15             if (instance ==null)
16             {
17                 if (instance == null)
18                 {
19                     XmlDocument xml = new XmlDocument();
20                     string temp_url = System.AppDomain.CurrentDomain.BaseDirectory + "Emails.xml";
21                     xml.Load(temp_url);
22                     XmlNodeList xmlList = xml.SelectNodes("/Emails/Email");
23                     instance = new List<EmailModel>();
24                     if (xmlList != null && xmlList.Count >= 1)
25                     {
26                         EmailModel _temp;
27                         foreach (XmlNode item in xmlList)
28                         {
29                             if (item.ChildNodes == null)
30                             {
31                                 continue;
32                             }
33 
34                             _temp = new EmailModel();
35                             _temp.Name = item.Attributes["name"].Value;
36                             _temp.Encode = item.Attributes["encode"].Value;
37                             foreach (XmlNode item_ in item.ChildNodes)
38                             {
39                                 switch (item_.Name)
40                                 {
41                                     case "ip":
42                                         _temp.IP = item_.InnerText;
43                                         break;
44                                     case "Identity":
45                                         _temp.Identity = item_.InnerText;
46                                         break;
47                                     case "Password":
48                                         _temp.Password = item_.InnerText;
49                                         break;
50                                 }
51                             }
52 
53                             instance.Add(_temp);
54                         }
55 
56                         if (instance.Count >= 1)
57                         {
58                             index = 0;
59                             result = instance[index];
60                         }
61                     }
62                 }
63             }
64             else
65             {
66                 if (instance.Count>=1)
67                 {
68                     result = instance[index];
69                     index++;
70                     index = index >= instance.Count ? 0 : index;
71                 }
72             }
73 
74             ILog log = LogManager.GetLogger(PublicEnum.SystemLog.ErrorLog.ToString());
75             log.Info("发送邮箱:" + result.Identity + ",名称:" + result.Name);
76             return result;
77         }
78     }
 1     /// <summary>
 2     /// 发送邮件类
 3     /// </summary>
 4     public class Email
 5     {
 6         /// <summary>
 7         /// 发送邮件
 8         /// </summary>
 9         /// <param name="userid">接收人邮件</param>
10         /// <param name="content">发送内容</param>
11         /// <param name="subject">发送主题,可为空,使用默认主题</param>
12        /// <param name="csuserEmailList">抄送人邮件列表</param>
13         public static void sendemail(string userEmail, string content, string subject,string csuserEmailList)
14         {
15             MailMessage mail = new MailMessage();
16             try
17             {
18                 string dest;
19                 dest = userEmail;
20                 EmailModel mail_model= Email_Singleton.GetEmailModel();
21                 if (mail_model == null)
22                 {
23                     return;
24                 }
25 
26                 mail.From = new MailAddress(mail_model.Identity, mail_model.Name, Encoding.GetEncoding(mail_model.Encode));
27                 mail.To.Add(new MailAddress(dest, userEmail, Encoding.GetEncoding(mail_model.Encode)));
28                 if (!string.IsNullOrEmpty(csuserEmailList))//发送给抄送人
29                 {
30                     string[] sp_readers = csuserEmailList.Split(',');
31                     string csuseremil = "";
32                     foreach (string str in sp_readers)
33                     {
34                         if (!string.IsNullOrEmpty(str))
35                         {
36                             csuseremil = str;
37 
38                             mail.CC.Add(new MailAddress(csuseremil, str, System.Text.Encoding.GetEncoding(mail_model.Encode)));
39                         }
40                     }
41                 }
42 
43                 mail.Subject = subject == "" ? "测试平台系统邮件" : subject.Trim();
44                 mail.Body = content;
45                 mail.IsBodyHtml = true;
46                 mail.Priority = MailPriority.High;
47                 mail.SubjectEncoding = Encoding.GetEncoding(mail_model.Encode);
48                 mail.BodyEncoding = Encoding.GetEncoding(mail_model.Encode);
49                 using (SmtpClient smtp = new SmtpClient(mail_model.IP))
50                 {//邮箱ip地址
51                     smtp.EnableSsl = true;
52                     smtp.UseDefaultCredentials = false;
53                     smtp.DeliveryMethod = SmtpDeliveryMethod.Network;
54                     smtp.Credentials = new System.Net.NetworkCredential(mail_model.Identity, mail_model.Password);
55                     ServicePointManager.ServerCertificateValidationCallback = (sender, cert, chain, error) =>
56                     {//为错误:根据验证过程,远程证书无效
57                         return true;
58                     };
59                     smtp.Send(mail);
60                     ILog log = LogManager.GetLogger(PublicEnum.SystemLog.MessageLog.ToString());
61                     log.Info("收件人" + userEmail + "的邮件发送成功;。服务邮箱:" + mail_model.Identity);
62                 }
63             }
64             catch (Exception ex)
65             {
66                 ILog log = LogManager.GetLogger(PublicEnum.SystemLog.ErrorLog.ToString());
67                 log.Info("收件人" + userEmail + "的邮件发送失败。详细信息:" + ex.Message + ex.Source);
68             }
69             finally {
70                 mail.Dispose();
71             }
72         }
73     }
Emails.xml

原文地址:https://www.cnblogs.com/kongxp/p/5672461.html