EMail.cs 2.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. using Microsoft.Extensions.Configuration;
  2. using System.Net;
  3. using System.Net.Mail;
  4. using System.Text;
  5. namespace Long.Utils.Mail;
  6. /// <summary>
  7. /// 发送邮件
  8. /// </summary>
  9. public class EMail
  10. {
  11. private readonly IConfiguration configuration;
  12. private readonly EMailOption eMailOption;
  13. public EMail()
  14. {
  15. IConfigurationBuilder configurationBuilder = new ConfigurationBuilder();
  16. configurationBuilder.AddJsonFile("appsettings.json", optional: true, reloadOnChange: true);
  17. configuration = configurationBuilder.Build();
  18. eMailOption = new EMailOption();
  19. var section = configuration.GetSection("EMailOption");
  20. eMailOption.Server = section.GetSection("Server").Value ?? "";
  21. var postString = section.GetSection("Port").Value;
  22. if (postString != null)
  23. {
  24. eMailOption.Port = int.Parse(postString ?? "");
  25. }
  26. eMailOption.UserName = section.GetSection("UserName").Value ?? "";
  27. eMailOption.Password = section.GetSection("Password").Value ?? "";
  28. eMailOption.From = section.GetSection("From").Value ?? "";
  29. }
  30. /// <summary>
  31. /// 发送
  32. /// </summary>
  33. /// <param name="subject">主题</param>
  34. /// <param name="message">内容</param>
  35. /// <param name="address">收件地址</param>
  36. /// <exception cref="ApplicationException"></exception>
  37. public async Task Send(string subject, string message, string address)
  38. {
  39. var client = new SmtpClient();
  40. var mailMsg = new MailMessage();
  41. client.Host = eMailOption.Server;
  42. client.DeliveryMethod = SmtpDeliveryMethod.Network;
  43. client.EnableSsl = true;
  44. mailMsg.To.Add(new MailAddress(address));
  45. mailMsg.From = new MailAddress(eMailOption.From);
  46. mailMsg.SubjectEncoding = Encoding.UTF8;
  47. mailMsg.Subject = subject;
  48. mailMsg.BodyEncoding = Encoding.UTF8;
  49. mailMsg.Body = message;
  50. try
  51. {
  52. client.UseDefaultCredentials = false;
  53. client.Credentials = new NetworkCredential(eMailOption.UserName, eMailOption.Password);
  54. // 发送邮件
  55. await client.SendMailAsync(mailMsg);
  56. client.Dispose();
  57. }
  58. catch (Exception ex)
  59. {
  60. throw new ApplicationException(ex.Message);
  61. }
  62. }
  63. }