Files
DotNetAngular/src/Application/Services/EmailService.cs
T
2026-02-19 13:49:01 +01:00

49 lines
1.5 KiB
C#

using Application.Interfaces;
using Application.Models;
using MailKit.Net.Smtp;
using Microsoft.Extensions.Configuration;
using MimeKit;
using MimeKit.Text;
namespace Application.Services;
public class EmailService(IConfiguration config, Func<ISmtpClient>? smtpClientFactory)
: IEmailService
{
private readonly Func<ISmtpClient> _smtpClientFactory = smtpClientFactory ?? (() => new SmtpClient());
public EmailService(IConfiguration config) : this(config, null)
{
}
public void SendEmailAsync(EmailRequest emailRequest)
{
var emailMessage = new MimeMessage();
var from = config["EmailSettings:From"];
emailMessage.From.Add(new MailboxAddress("RssReader", from));
emailMessage.To.Add(new MailboxAddress(emailRequest.To, emailRequest.To));
emailMessage.Subject = emailRequest.Subject;
emailMessage.Body = new TextPart(TextFormat.Html)
{
Text = string.Format(emailRequest.Content)
};
var client = _smtpClientFactory();
try
{
client.Connect(config["EmailSettings:SmtpServer"], 465, true);
client.Authenticate(config["EmailSettings:From"], config["EmailSettings:Password"]);
client.Send(emailMessage);
}
catch (Exception e)
{
Console.WriteLine(e);
throw;
}
finally
{
client.Disconnect(true);
client.Dispose();
}
}
}