using MailKit.Net.Smtp;
using MailKit.Security;
using MimeKit;
namespace OASystem.API.OAMethodLib.HotmailEmail
{
///
/// Hotemail 服务
///
public class HotmailEmailService : IHotmailEmailService
{
private readonly IConfiguration _configuration;
public HotmailEmailService(IConfiguration configuration)
{
_configuration = configuration;
}
public async Task SendEmailAsync(string toEmail, string subject, string htmlContent)
{
// 从配置读取信息
var smtpServer = _configuration["HotEmailConfig:SmtpServer"];
var smtpPort = int.Parse(_configuration["HotEmailConfig:SmtpPort"]);
var senderEmail = _configuration["HotEmailConfig:SenderEmail"];
var senderName = _configuration["HotEmailConfig:SenderName"];
var appPassword = _configuration["HotEmailConfig:AppPassword"];
var message = new MimeMessage();
message.From.Add(new MailboxAddress(senderName, senderEmail));
message.To.Add(new MailboxAddress("", toEmail));
message.Subject = subject;
var bodyBuilder = new BodyBuilder { HtmlBody = htmlContent };
message.Body = bodyBuilder.ToMessageBody();
using var client = new SmtpClient();
try
{
// 连接服务器 (Hotmail/Outlook 必须使用 StartTls)
await client.ConnectAsync(smtpServer, smtpPort, SecureSocketOptions.StartTls);
// 身份验证
await client.AuthenticateAsync(senderEmail, appPassword);
// 执行发送
await client.SendAsync(message);
await client.DisconnectAsync(true);
return true;
}
catch (Exception ex)
{
// 这里可以记录到你的 OASystem 日志库
Console.WriteLine($"[Email Error]: {ex.Message}");
return false;
}
}
}
}