phronCare/Services/Services/EmailService.cs

48 lines
1.5 KiB
C#

using Services.Interfaces;
using Services.Models;
using MailKit.Net.Smtp;
using MimeKit;
namespace Services.Services
{
public class EmailService : IEmailService
{
private readonly EmailConfiguration emailConfig;
public EmailService(EmailConfiguration emailConfig) => this.emailConfig = emailConfig;
public void SendEmail(Message message)
{
var emailMessage = CreateEmailMessage(message);
Send(emailMessage);
}
private MimeMessage CreateEmailMessage(Message message)
{
var emailMessage = new MimeMessage();
emailMessage.From.Add(new MailboxAddress("email", emailConfig.From));
emailMessage.To.AddRange(message.To);
emailMessage.Subject = message.Subject;
emailMessage.Body = new TextPart(MimeKit.Text.TextFormat.Text) { Text = message.Content };
return emailMessage;
}
private void Send(MimeMessage mailmessage)
{
using var client = new SmtpClient();
try
{
client.Connect(emailConfig.SmtpServer, emailConfig.Port, true);
client.AuthenticationMechanisms.Remove("XOAUTH2");
client.Authenticate(emailConfig.UserName, emailConfig.Password);
client.Send(mailmessage);
}
catch
{
throw;
}
finally
{
client.Disconnect(true);
client.Dispose();
}
}
}
}