using System; using System.Collections.Generic; using System.Text; using System.Net.Mail; using System.Net; using QuickEAS.CoreLib.Utils; namespace QuickEAS.Network { /// <summary> /// 邮件发送方式 /// </summary> public enum LibMailSendWay { /// <summary> /// 以SMTP方式 /// </summary> BySMTP, /// <summary> /// 以WEB方式 /// </summary> ByWeb } /// <summary> /// 邮件发送参数 /// </summary> public class LibMailSendArgs { public LibMailSendWay SendWay { get; set; } /// <summary> /// SMTP主机 /// </summary> public string SMTPHost { get; set; } /// <summary> /// SMTP端口 /// </summary> public int SMTPPort { get; set; } /// <summary> /// 使用SSL /// </summary> public bool EnableSSL { get; set; } /// <summary> /// 发件人地址 /// </summary> public string MailFrom { get; set; } /// <summary> /// 收件人地址 /// </summary> public string MailTo { get; set; } /// <summary> /// 登入帐号 /// </summary> public string UserID { get; set; } /// <summary> /// 登入密码 /// </summary> public string UserPassword { get; set; } /// <summary> /// 邮件标题 /// </summary> public string Subject { get; set; } /// <summary> /// 邮件内容 /// </summary> public string Body { get; set; } /// <summary> /// HTML方式发送 /// </summary> public bool IsHTML { get; set; } } /// <summary> /// 邮件发送类 /// </summary> public class LibSendMail { public static bool PostEmailBySMTP(LibMailSendArgs args, int tryCountIfSendFail = 3) { bool result = false; MailMessage mailmsg = new MailMessage(); mailmsg.From = new MailAddress(args.MailFrom); //定义发件人 string[] mailToArray = LibSysUtils.SplitString(args.MailTo, ";"); if (mailToArray.Length > 0) { foreach (string mailTo in mailToArray) { MailAddress mailAddress = null; if (mailTo.Contains("<") && mailTo.Contains(">")) { //易贸网络<[email protected]> string[] strs = LibSysUtils.SplitString(mailTo, "<"); string displayName = strs[0]; strs = LibSysUtils.SplitString(strs[1], ">"); string email = strs[0]; mailAddress = new MailAddress(email, displayName); } else mailAddress = new MailAddress(mailTo); mailmsg.To.Add(mailAddress); //添加收件人 } mailmsg.Subject = args.Subject; //邮件标题 mailmsg.Body = args.Body; //邮件内容 mailmsg.BodyEncoding = Encoding.UTF8; mailmsg.IsBodyHtml = args.IsHTML; SmtpClient smtpClient = new SmtpClient(); smtpClient.Host = args.SMTPHost;//发送邮件服务器 smtpClient.Port = args.SMTPPort; smtpClient.Credentials = new NetworkCredential(args.UserID, args.UserPassword); smtpClient.EnableSsl = args.EnableSSL; smtpClient.Timeout = 1000 * 60; //60秒超时 int failIndex = 0; do { try { smtpClient.Send(mailmsg); break; } catch (Exception ex) { failIndex++; if (failIndex < tryCountIfSendFail) { LibSysUtils.AppendLog(LibSysUtils.GetInnerException(ex)); LibSysUtils.Sleep(5000); } else throw LibSysUtils.GetInnerException(ex); } } while (failIndex < tryCountIfSendFail); result = true; } return result; } public static bool PostEmailByWeb(LibMailSendArgs args) { return false; } public static bool PostEmail(LibMailSendArgs args) { bool result = false; switch (args.SendWay) { case LibMailSendWay.BySMTP: result = PostEmailBySMTP(args); break; case LibMailSendWay.ByWeb: result = PostEmailByWeb(args); break; } return result; } } }
【代码片段】发送邮件
猜你喜欢
转载自blog.csdn.net/michelsn/article/details/80297936
今日推荐
周排行