一、调用发送邮件
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); }
二、邮件辅助
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) { } } }
三、实体类
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; } }