56 lines
2.0 KiB
C#
56 lines
2.0 KiB
C#
using MailKit.Net.Smtp;
|
|
using MimeKit;
|
|
using System;
|
|
using System.Threading.Tasks;
|
|
using MimeKit.Text;
|
|
|
|
namespace AyaNova.Util
|
|
{
|
|
public interface IMailer
|
|
{
|
|
Task SendEmailAsync(string email, string subject, string body, AyaNova.Models.GlobalOpsNotificationSettings smtpSettings, string bodyHTML = null);
|
|
}
|
|
|
|
public class Mailer : IMailer
|
|
{
|
|
public Mailer()
|
|
{
|
|
|
|
}
|
|
|
|
public async Task SendEmailAsync(string email, string subject, string body, AyaNova.Models.GlobalOpsNotificationSettings smtpSettings, string bodyHTML = null)
|
|
{
|
|
try
|
|
{
|
|
var message = new MimeMessage();
|
|
message.From.Add(new MailboxAddress(smtpSettings.NotifyFromAddress, smtpSettings.NotifyFromAddress));
|
|
message.To.Add(MailboxAddress.Parse(email));
|
|
message.Subject = subject;
|
|
if (!string.IsNullOrWhiteSpace(body))
|
|
message.Body = new TextPart(TextFormat.Plain) { Text = body };
|
|
if (!string.IsNullOrWhiteSpace(bodyHTML))
|
|
message.Body = new TextPart("html")
|
|
{
|
|
Text = body
|
|
};
|
|
|
|
using (var client = new SmtpClient())
|
|
{
|
|
client.ServerCertificateValidationCallback = (s, c, h, e) => true;
|
|
|
|
bool UseSSL = smtpSettings.ConnectionSecurity != Biz.NotifyMailSecurity.None;
|
|
await client.ConnectAsync(smtpSettings.SmtpServerAddress, smtpSettings.SmtpServerPort, UseSSL);
|
|
|
|
|
|
await client.AuthenticateAsync(smtpSettings.SmtpAccount, smtpSettings.SmtpPassword);
|
|
await client.SendAsync(message);
|
|
await client.DisconnectAsync(true);
|
|
}
|
|
}
|
|
catch (Exception e)
|
|
{
|
|
throw new InvalidOperationException(e.Message);
|
|
}
|
|
}
|
|
}
|
|
} |