roadie/Roadie.Api.Services/EmailSenderService.cs

45 lines
1.7 KiB
C#
Raw Normal View History

2019-01-08 16:40:26 -06:00
using Microsoft.AspNetCore.Identity.UI.Services;
2019-01-08 09:51:26 -06:00
using Roadie.Library.Configuration;
2019-11-28 11:38:26 -06:00
using System.Diagnostics;
2019-01-08 09:51:26 -06:00
using System.Net;
using System.Net.Mail;
using System.Threading.Tasks;
namespace Roadie.Api.Services
{
public class EmailSenderService : IEmailSender
{
2019-01-08 16:40:26 -06:00
protected IRoadieSettings Configuration { get; }
2019-01-08 09:51:26 -06:00
public EmailSenderService(IRoadieSettings configuration)
{
2019-06-30 17:14:36 -05:00
Configuration = configuration;
2019-01-08 09:51:26 -06:00
}
public async Task SendEmailAsync(string email, string subject, string htmlMessage)
{
if (string.IsNullOrEmpty(Configuration.SmtpHost))
2019-11-28 11:38:26 -06:00
{
Trace.WriteLine("Email Server (Configuration.SmtpHost) Not Configured", "Warning");
return;
}
2019-06-30 17:14:36 -05:00
using (var mail = new MailMessage(Configuration.SmtpFromAddress, email))
2019-01-08 09:51:26 -06:00
{
2019-06-30 17:14:36 -05:00
using (var client = new SmtpClient())
2019-01-08 09:51:26 -06:00
{
2019-06-30 17:14:36 -05:00
client.Port = Configuration.SmtpPort;
client.EnableSsl = Configuration.SmtpUseSSl;
2019-01-08 09:51:26 -06:00
client.DeliveryMethod = SmtpDeliveryMethod.Network;
client.UseDefaultCredentials = false;
2019-06-30 17:14:36 -05:00
client.Credentials = new NetworkCredential(Configuration.SmtpUsername, Configuration.SmtpPassword);
client.Host = Configuration.SmtpHost;
2019-01-08 09:51:26 -06:00
mail.Subject = subject;
mail.IsBodyHtml = true;
mail.Body = htmlMessage;
2019-06-30 17:14:36 -05:00
ServicePointManager.ServerCertificateValidationCallback = delegate { return true; };
await client.SendMailAsync(mail).ConfigureAwait(false);
2019-01-08 09:51:26 -06:00
}
}
}
}
2019-01-08 16:40:26 -06:00
}