diff --git a/src/Ombi.Notifications/GenericEmailProvider.cs b/src/Ombi.Notifications/GenericEmailProvider.cs index 419c7abd2..c95fd9f23 100644 --- a/src/Ombi.Notifications/GenericEmailProvider.cs +++ b/src/Ombi.Notifications/GenericEmailProvider.cs @@ -3,12 +3,59 @@ using System.Threading.Tasks; using MailKit.Net.Smtp; using MimeKit; using Ombi.Notifications.Models; +using Ombi.Notifications.Templates; using Ombi.Settings.Settings.Models.Notifications; namespace Ombi.Notifications { public class GenericEmailProvider : IEmailProvider { + public async Task SendAdHoc(NotificationMessage model, EmailNotificationSettings settings) + { + try + { + + var email = new EmailBasicTemplate(); + var html = email.LoadTemplate(model.Subject, model.Message, null); + + var body = new BodyBuilder + { + HtmlBody = html, + //TextBody = model.Other["PlainTextBody"] + }; + + var message = new MimeMessage + { + Body = body.ToMessageBody(), + Subject = model.Subject + }; + message.From.Add(new MailboxAddress(settings.Sender, settings.Sender)); + message.To.Add(new MailboxAddress(model.To, model.To)); + + using (var client = new SmtpClient()) + { + client.Connect(settings.Host, settings.Port); // Let MailKit figure out the correct SecureSocketOptions. + + // Note: since we don't have an OAuth2 token, disable + // the XOAUTH2 authentication mechanism. + client.AuthenticationMechanisms.Remove("XOAUTH2"); + + if (settings.Authentication) + { + client.Authenticate(settings.Username, settings.Password); + } + //Log.Info("sending message to {0} \r\n from: {1}\r\n Are we authenticated: {2}", message.To, message.From, client.IsAuthenticated); + await client.SendAsync(message); + await client.DisconnectAsync(true); + } + } + catch (Exception e) + { + //Log.Error(e); + throw new InvalidOperationException(e.Message); + } + } + public async Task Send(NotificationMessage model, EmailNotificationSettings settings) { try diff --git a/src/Ombi.Notifications/IEmailProvider.cs b/src/Ombi.Notifications/IEmailProvider.cs index f1bb6a358..85bb91331 100644 --- a/src/Ombi.Notifications/IEmailProvider.cs +++ b/src/Ombi.Notifications/IEmailProvider.cs @@ -7,5 +7,6 @@ namespace Ombi.Notifications public interface IEmailProvider { Task Send(NotificationMessage model, EmailNotificationSettings settings); + Task SendAdHoc(NotificationMessage model, EmailNotificationSettings settings); } } \ No newline at end of file diff --git a/src/Ombi/Controllers/IdentityController.cs b/src/Ombi/Controllers/IdentityController.cs index 84af750f5..f4a342cf1 100644 --- a/src/Ombi/Controllers/IdentityController.cs +++ b/src/Ombi/Controllers/IdentityController.cs @@ -446,11 +446,11 @@ namespace Ombi.Controllers var url = $"{HttpContext.Request.Scheme}://{HttpContext.Request.Host}"; - await EmailProvider.Send(new NotificationMessage + await EmailProvider.SendAdHoc(new NotificationMessage { To = user.Email, Subject = $"{appName} Password Reset", - Message = $"Hello {user.UserName},
You recently made a request to reset your {appName} account. Please click the link below to complete the process.

" + + Message = $"You recently made a request to reset your {appName} account. Please click the link below to complete the process.

" + $" Reset " }, emailSettings);