閱讀479 返回首頁    go 京東網上商城


C# SMTP郵件發送

郵件發送在網站應用程序中經常會用到,包括您現在看到的博客,在添加評論後,係統會自動發送郵件通知到我郵箱的,把係統發送郵件的功能整理了下,做了一個客戶端Demo,希望對有需要的童鞋有所幫助:


核心代碼:

001 using System;
002 using System.Net;
003 using System.Net.Mail;
004 using System.Text;
005  
006 namespace HC.Email
007 {
008     /// <summary>
009     ///     整站郵件服務類
010     /// </summary>
011     public class EmailService
012     {
013         /// <summary>
014         ///     發送郵件
015         /// </summary>
016         /// <param name="mailTo">收件人
017         /// <param name="subject">主題
018         /// <param name="body">內容
019         /// <returns></returns>
020         public static bool Send(string mailTo, string subject, string body)
021         {
022             return Send(new[] {mailTo}, null, subject, body, truenull);
023         }
024  
025         /// <summary>
026         ///     發送郵件
027         /// </summary>
028         /// <param name="mailTo">收件人
029         /// <param name="subject">主題
030         /// <param name="body">內容
031         /// <returns></returns>
032         public static bool Send(string[] mailTo, string subject, string body)
033         {
034             return Send(mailTo, null, subject, body, truenull);
035         }
036  
037         /// <summary>
038         ///     發送郵件
039         /// </summary>
040         /// <param name="mailTo">收件人
041         /// <param name="subject">主題
042         /// <param name="body">內容
043         /// <param name="attachmentsPath">附件
044         /// <returns></returns>
045         public static bool Send(string[] mailTo, string subject, string body, string[] attachmentsPath)
046         {
047             return Send(mailTo, null, subject, body, true, attachmentsPath);
048         }
049  
050  
051         /// <summary>
052         ///     發送郵件
053         /// </summary>
054         /// <param name="mailTo">收件人
055         /// <param name="mailCcArray">抄送
056         /// <param name="subject">主題
057         /// <param name="body">內容
058         /// <param name="isBodyHtml">是否Html
059         /// <param name="attachmentsPath">附件
060         /// <returns></returns>
061         public static bool Send(string[] mailTo, string[] mailCcArray, string subject,string body, bool isBodyHtml,
062                                 string[] attachmentsPath)
063         {
064             try
065             {
066                 var config = ConfigHelper.GetConfig<emailconfig>();
067                 if (string.IsNullOrEmpty(config.Host) ||string.IsNullOrEmpty(config.UserName) ||
068                     string.IsNullOrEmpty(config.Port) ||string.IsNullOrEmpty(config.Password))
069                 {
070                     //todo:記錄日誌
071                     return false;
072                 }
073                 var @from = new MailAddress(config.MailFrom); //使用指定的郵件地址初始化MailAddress實例
074                 var message = new MailMessage(); //初始化MailMessage實例
075                 //向收件人地址集合添加郵件地址
076                 if (mailTo != null)
077                 {
078                     foreach (string in mailTo)
079                     {
080                         message.To.Add(t);
081                     }
082                 }
083  
084                 //向抄送收件人地址集合添加郵件地址
085                 if (mailCcArray != null)
086                 {
087                     foreach (string in mailCcArray)
088                     {
089                         message.CC.Add(t);
090                     }
091                 }
092                 //發件人地址
093                 message.From = @from;
094  
095                 //電子郵件的標題
096                 message.Subject = subject;
097  
098                 //電子郵件的主題內容使用的編碼
099                 message.SubjectEncoding = Encoding.UTF8;
100  
101                 //電子郵件正文
102                 message.Body = body;
103  
104                 //電子郵件正文的編碼
105                 message.BodyEncoding = Encoding.Default;
106                 message.Priority = MailPriority.High;
107                 message.IsBodyHtml = isBodyHtml;
108  
109                 //在有附件的情況下添加附件
110                 if (attachmentsPath != null && attachmentsPath.Length > 0)
111                 {
112                     foreach (string path in attachmentsPath)
113                     {
114                         var attachFile = new Attachment(path);
115                         message.Attachments.Add(attachFile);
116                     }
117                 }
118                 try
119                 {
120                     var smtp = new SmtpClient
121                         {
122                             Credentials = new NetworkCredential(config.UserName, config.Password),
123                             Host = config.Host,
124                             Port = Convert.ToInt32(config.Port)
125                         };
126  
127                     //將郵件發送到SMTP郵件服務器
128                     smtp.Send(message);
129                     //todo:記錄日誌
130                     return true;
131                 }
132                 catch (SmtpException ex)
133                 {
134                     //todo:記錄日誌
135                     return false;
136                 }
137             }
138             catch (SmtpException ex)
139             {
140                 //todo:記錄日誌
141                 return false;
142             }
143         }
144     }
145 }

源代碼下載


最後更新:2017-04-03 05:39:11

  上一篇:go tcMalloc 配置和優化 nginx 高性能
  下一篇:go 清除Android工程中沒用到的資源