48 lines
1.5 KiB
C#
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();
|
|
}
|
|
}
|
|
}
|
|
}
|