36 lines
1.2 KiB
C#

using Marco.Pms.Model.Utilities;
using Microsoft.Extensions.Options;
using MailKit.Net.Smtp;
using MimeKit;
namespace MarcoBMS.Services.Service
{ public class EmailSender : IEmailSender
{
private readonly SmtpSettings _smtpSettings;
public EmailSender(IOptions<SmtpSettings> emailSettings)
{
_smtpSettings = emailSettings.Value;
}
public async Task SendEmailAsync(string toEmail, string subject, string body)
{
var email = new MimeMessage();
email.From.Add(new MailboxAddress(_smtpSettings.SenderName, _smtpSettings.SenderEmail));
email.To.Add(MailboxAddress.Parse(toEmail));
email.Subject = subject;
var bodyBuilder = new BodyBuilder { HtmlBody = body };
email.Body = bodyBuilder.ToMessageBody();
using var smtp = new SmtpClient();
await smtp.ConnectAsync(_smtpSettings.SmtpServer, _smtpSettings.Port, MailKit.Security.SecureSocketOptions.StartTls);
await smtp.AuthenticateAsync(_smtpSettings.SenderEmail, _smtpSettings.Password);
await smtp.SendAsync(email);
await smtp.DisconnectAsync(true);
}
}
}