EmailSendHelper.cs 5.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Net;
  5. using System.Net.Mail;
  6. using System.Text;
  7. using System.Threading.Tasks;
  8. namespace ShwasherSys
  9. {
  10. public class EmailSendHelper
  11. {
  12. public static int Port = Convert.ToInt32(System.Configuration.ConfigurationManager.AppSettings["EmailPort"]??"0");
  13. public static string Host = System.Configuration.ConfigurationManager.AppSettings["EmailHost"];
  14. public static string UserName = System.Configuration.ConfigurationManager.AppSettings["EmailUserName"];
  15. public static string Password = System.Configuration.ConfigurationManager.AppSettings["EmailPassword"];
  16. public static string Domain = System.Configuration.ConfigurationManager.AppSettings["EmailDomain"];
  17. public static bool EnableSsl = System.Configuration.ConfigurationManager.AppSettings["EmailEnableSsl"] =="true";
  18. public static bool UseDefaultCredentials = System.Configuration.ConfigurationManager.AppSettings["EmailUseDefaultCredentials"] =="true";
  19. public static SmtpEmailSenderConfig _config = new SmtpEmailSenderConfig(Host,Port, UserName, Password, Domain, EnableSsl, UseDefaultCredentials);
  20. /// <summary>
  21. /// 发送邮件(有问题此方法只能163的邮箱发送成功)
  22. /// </summary>
  23. /// <param name="to"></param>
  24. /// <param name="subject"></param>
  25. /// <param name="body"></param>
  26. /// <param name="from"></param>
  27. /// <param name="displayName"></param>
  28. /// <param name="isBodyHtml"></param>
  29. /// <param name="mailPriority"></param>
  30. /// <param name="smtpEmailSenderConfig"></param>
  31. public static void SendEmail(string to,string subject,string body, string from="", string displayName="", bool isBodyHtml=false, MailPriority mailPriority = MailPriority.Normal, SmtpEmailSenderConfig smtpEmailSenderConfig=null)
  32. {
  33. MailMessage msg = new MailMessage();
  34. msg.To.Add(to);
  35. if (smtpEmailSenderConfig == null)
  36. {
  37. smtpEmailSenderConfig = _config;
  38. }
  39. from = string.IsNullOrEmpty(from) ? smtpEmailSenderConfig.UserName : from;
  40. displayName = string.IsNullOrEmpty(displayName) ? smtpEmailSenderConfig.UserName : from;
  41. msg.From = new MailAddress(from, displayName);
  42. msg.Subject = subject;
  43. msg.SubjectEncoding = Encoding.UTF8;
  44. msg.Body = body;
  45. msg.BodyEncoding = Encoding.UTF8;
  46. msg.IsBodyHtml = isBodyHtml;
  47. msg.Priority = mailPriority;
  48. SmtpClient client = new SmtpClient
  49. {
  50. UseDefaultCredentials = smtpEmailSenderConfig.UseDefaultCredentials,
  51. Credentials = new NetworkCredential(smtpEmailSenderConfig.UserName, smtpEmailSenderConfig.Password),
  52. Port = smtpEmailSenderConfig.Port,
  53. Host = smtpEmailSenderConfig.Host,
  54. EnableSsl = smtpEmailSenderConfig.EnableSsl,
  55. Timeout = 10000,
  56. DeliveryMethod = SmtpDeliveryMethod.Network
  57. };
  58. //senderAuthCode不是qq邮箱登录密码,需要在qq邮箱,设置>账户>smtp...,生成授权码
  59. //QqMail:587(注意:465是无效的)
  60. // "smtp.qq.com";
  61. //经过ssl加密
  62. //client.DeliveryMethod = SmtpDeliveryMethod.PickupDirectoryFromIis;
  63. try
  64. {
  65. client.Send(msg);
  66. }
  67. catch (Exception ex)
  68. {
  69. typeof(EmailHelper).LogError(ex);
  70. }
  71. }
  72. }
  73. public class SmtpEmailSenderConfig
  74. {
  75. public SmtpEmailSenderConfig()
  76. {
  77. }
  78. public SmtpEmailSenderConfig(string host,int port,string userName,string password,string domain,bool enableSsl,bool useDefaultCredentials)
  79. {
  80. Host = host;
  81. Port = port;
  82. UserName = userName;
  83. Password = password;
  84. Domain = domain;
  85. EnableSsl = enableSsl;
  86. UseDefaultCredentials = useDefaultCredentials;
  87. }
  88. /// <summary>
  89. /// SMTP Host name/IP.
  90. /// </summary>
  91. public string Host { get; set; }
  92. /// <summary>
  93. /// SMTP Port.
  94. /// </summary>
  95. public int Port { get; set; }
  96. /// <summary>
  97. /// User name to login to SMTP server.
  98. /// </summary>
  99. public string UserName { get; set; }
  100. /// <summary>
  101. /// Password to login to SMTP server.
  102. /// </summary>
  103. public string Password { get; set; }
  104. /// <summary>
  105. /// Domain name to login to SMTP server.
  106. /// </summary>
  107. public string Domain { get; set; }
  108. /// <summary>
  109. /// Is SSL enabled?
  110. /// </summary>
  111. public bool EnableSsl { get; set; }
  112. /// <summary>
  113. /// Use default credentials?
  114. /// </summary>
  115. public bool UseDefaultCredentials { get; set; }
  116. }
  117. }