HotmailEmailService.cs 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. 
  2. using MailKit.Net.Smtp;
  3. using MailKit.Security;
  4. using MimeKit;
  5. namespace OASystem.API.OAMethodLib.HotmailEmail
  6. {
  7. /// <summary>
  8. /// Hotemail 服务
  9. /// </summary>
  10. public class HotmailEmailService : IHotmailEmailService
  11. {
  12. private readonly IConfiguration _configuration;
  13. public HotmailEmailService(IConfiguration configuration)
  14. {
  15. _configuration = configuration;
  16. }
  17. public async Task<bool> SendEmailAsync(string toEmail, string subject, string htmlContent)
  18. {
  19. // 从配置读取信息
  20. var smtpServer = _configuration["HotEmailConfig:SmtpServer"];
  21. var smtpPort = int.Parse(_configuration["HotEmailConfig:SmtpPort"]);
  22. var senderEmail = _configuration["HotEmailConfig:SenderEmail"];
  23. var senderName = _configuration["HotEmailConfig:SenderName"];
  24. var appPassword = _configuration["HotEmailConfig:AppPassword"];
  25. var message = new MimeMessage();
  26. message.From.Add(new MailboxAddress(senderName, senderEmail));
  27. message.To.Add(new MailboxAddress("", toEmail));
  28. message.Subject = subject;
  29. var bodyBuilder = new BodyBuilder { HtmlBody = htmlContent };
  30. message.Body = bodyBuilder.ToMessageBody();
  31. using var client = new SmtpClient();
  32. try
  33. {
  34. // 连接服务器 (Hotmail/Outlook 必须使用 StartTls)
  35. await client.ConnectAsync(smtpServer, smtpPort, SecureSocketOptions.StartTls);
  36. // 身份验证
  37. await client.AuthenticateAsync(senderEmail, appPassword);
  38. // 执行发送
  39. await client.SendAsync(message);
  40. await client.DisconnectAsync(true);
  41. return true;
  42. }
  43. catch (Exception ex)
  44. {
  45. // 这里可以记录到你的 OASystem 日志库
  46. Console.WriteLine($"[Email Error]: {ex.Message}");
  47. return false;
  48. }
  49. }
  50. }
  51. }