1、調用發送郵件sql
public void SendEmail() { SendEmailParam param = new SendEmailParam(); param.Host = "smtp.163.com";//若是是QQ郵箱則:smtp:qq.com,依次類推 param.IsBodyHtml = true; param.MailBody = "<h1>哈哈哈,我是正文</h1>"; param.MailFrom = "********@163.com"; param.MailPwd = "*********"; param.MailSubject = "我是Subject"; //收件集合人 param.ReceiverList = new List<string>(); param.ReceiverList.Add("********@qq.com"); //抄送人集合 param.MailCcArray = new List<string>(); param.MailCcArray.Add("*********@qq.com"); //附件 param.AttachmentList = new List<string>(); param.AttachmentList.Add(@"G:\11111.sql"); //同步發送一個 MailHelper.DefaultMail.SyncSendEmail(param); //異步發送一個 MailHelper.DefaultMail.AsyncSendEmail(param); }
2、郵件輔助服務器
public class MailHelper { public static readonly MailHelper DefaultMail = new MailHelper(); private object obj = new object(); private Thread thread = null; /// <summary> /// 同步發送郵件 /// </summary> /// <param name="param"></param> /// <returns></returns> public bool SyncSendEmail(SendEmailParam param) { if (param.ReceiverList == null || param.ReceiverList.Count <= 0) { new Exception("請提供收件人."); } MailAddress mailAddress = new MailAddress(param.MailFrom); MailMessage mailMessage = new MailMessage(); //收件人集合 if (param.ReceiverList!=null) { foreach (var item in param.ReceiverList) { mailMessage.To.Add(item); } } //抄送收件人集合 if (param.MailCcArray!=null) { foreach (var item in param.MailCcArray) { mailMessage.CC.Add(item); } } //發件人地址 mailMessage.From = mailAddress; //郵件標題 mailMessage.Subject = param.MailSubject; //郵件標題編碼 mailMessage.SubjectEncoding = Encoding.UTF8; //郵件正文 mailMessage.Body = param.MailBody; //郵件正文編碼 mailMessage.BodyEncoding = Encoding.UTF8; mailMessage.Priority = MailPriority.High; mailMessage.IsBodyHtml = param.IsBodyHtml; //添加附件 try { if (param.AttachmentList != null && param.AttachmentList.Count > 0) { foreach (var item in param.AttachmentList) { if (!System.IO.File.Exists(item)) { continue; } Attachment attachFile = new Attachment(item); mailMessage.Attachments.Add(attachFile); } } } catch (Exception ex) { throw new Exception("添加附件時出錯:" + ex.Message); } SmtpClient smtp = new SmtpClient(); //指定發件人的郵件地址和密碼以驗證發件人身份 smtp.Credentials = new System.Net.NetworkCredential(param.MailFrom, param.MailPwd); //設置SMTP郵件服務器 smtp.Host = param.Host; //發送郵件 try { lock (obj) { smtp.Send(mailMessage); } return true; } catch (Exception ex) { throw ex; } } /// <summary> /// 異步發送郵件 /// </summary> /// <param name="param"></param> /// <returns></returns> public void AsyncSendEmail(SendEmailParam param) { thread = new Thread(new ParameterizedThreadStart(AsyncSendEmail)); thread.Start(param); } private void AsyncSendEmail(object obj) { try { this.SyncSendEmail(obj as SendEmailParam); } catch (Exception ex) { } } }
3、實體類異步
public class SendEmailParam { /// <summary> /// 發送者郵箱 /// </summary> public string MailFrom { get; set; } /// <summary> /// 發送者郵箱密碼 /// </summary> public string MailPwd { get; set; } /// <summary> /// 郵件主題 /// </summary> public string MailSubject { get; set; } /// <summary> /// 郵件正文 /// </summary> public string MailBody { get; set; } /// <summary> /// 正文是不是HTML格式 /// </summary> public bool IsBodyHtml { get; set; } /// <summary> /// 郵件服務器 /// </summary> public string Host { get; set; } /// <summary> /// 收件人郵件集合 /// </summary> public List<string> ReceiverList { get; set; } /// <summary> /// 抄送者郵件集合 /// </summary> public List<string> MailCcArray { get; set; } /// <summary> /// 附件集合 /// </summary> public List<string> AttachmentList { get; set; } }