36 lines
1.2 KiB
C#
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);
|
|
}
|
|
}
|
|
|
|
}
|