diff --git a/Ombi.Services/Interfaces/IRecentlyAdded.cs b/Ombi.Services/Interfaces/IRecentlyAdded.cs index c18ca8e27..203d4804b 100644 --- a/Ombi.Services/Interfaces/IRecentlyAdded.cs +++ b/Ombi.Services/Interfaces/IRecentlyAdded.cs @@ -6,6 +6,6 @@ namespace Ombi.Services.Jobs { void Execute(IJobExecutionContext context); void RecentlyAddedAdminTest(); - void Start(); + void StartNewsLetter(); } } \ No newline at end of file diff --git a/Ombi.Services/Jobs/RecentlyAdded.cs b/Ombi.Services/Jobs/RecentlyAdded.cs index 9ee52f231..74474821c 100644 --- a/Ombi.Services/Jobs/RecentlyAdded.cs +++ b/Ombi.Services/Jobs/RecentlyAdded.cs @@ -67,8 +67,6 @@ namespace Ombi.Services.Jobs private IPlexApi Api { get; } private TvMazeApi TvApi = new TvMazeApi(); private readonly TheMovieDbApi _movieApi = new TheMovieDbApi(); - private const int MetadataTypeTv = 4; - private const int MetadataTypeMovie = 1; private ISettingsService PlexSettings { get; } private ISettingsService EmailSettings { get; } private ISettingsService NewsletterSettings { get; } @@ -78,7 +76,7 @@ namespace Ombi.Services.Jobs private static readonly Logger Log = LogManager.GetCurrentClassLogger(); - public void Start() + public void StartNewsLetter() { try { @@ -88,7 +86,7 @@ namespace Ombi.Services.Jobs return; } JobRecord.SetRunning(true, JobNames.RecentlyAddedEmail); - Start(settings); + StartNewsLetter(settings); } catch (Exception e) { @@ -102,35 +100,33 @@ namespace Ombi.Services.Jobs } public void Execute(IJobExecutionContext context) { - Start(); + StartNewsLetter(); } public void RecentlyAddedAdminTest() { Log.Debug("Starting Recently Added Newsletter Test"); var settings = NewsletterSettings.GetSettings(); - Start(settings, true); + StartNewsLetter(settings, true); } + public void MassEmailAdminTest(string html, string subject) { Log.Debug("Starting Mass Email Test"); - var settings = NewsletterSettings.GetSettings(); - var plexSettings = PlexSettings.GetSettings(); var template = new MassEmailTemplate(); var body = template.LoadTemplate(html); - Send(settings, body, plexSettings, true, subject); + SendMassEmail(body, subject, true); } + public void SendMassEmail(string html, string subject) { Log.Debug("Starting Mass Email Test"); - var settings = NewsletterSettings.GetSettings(); - var plexSettings = PlexSettings.GetSettings(); var template = new MassEmailTemplate(); var body = template.LoadTemplate(html); - Send(settings, body, plexSettings, false, subject); + SendMassEmail(body, subject, false); } - private void Start(NewletterSettings newletterSettings, bool testEmail = false) + private void StartNewsLetter(NewletterSettings newletterSettings, bool testEmail = false) { var sb = new StringBuilder(); var plexSettings = PlexSettings.GetSettings(); @@ -222,7 +218,7 @@ namespace Ombi.Services.Jobs string escapedHtml = new string(html.Where(c => !char.IsControl(c)).ToArray()); Log.Debug(escapedHtml); - Send(newletterSettings, escapedHtml, plexSettings, testEmail); + SendNewsletter(newletterSettings, escapedHtml, plexSettings, testEmail); } private void GenerateMovieHtml(List movies, PlexSettings plexSettings, StringBuilder sb) @@ -457,9 +453,49 @@ namespace Ombi.Services.Jobs sb.Append("

"); } - private void Send(NewletterSettings newletterSettings, string html, PlexSettings plexSettings, bool testEmail = false, string subject = "New Content on Plex!") + + private void SendMassEmail(string html, string subject, bool testEmail) + { + var settings = EmailSettings.GetSettings(); + + if (!settings.Enabled || string.IsNullOrEmpty(settings.EmailHost)) + { + return; + } + + var body = new BodyBuilder { HtmlBody = html, TextBody = "This email is only available on devices that support HTML." }; + + var message = new MimeMessage + { + Body = body.ToMessageBody(), + Subject = subject + }; + Log.Debug("Created Plain/HTML MIME body"); + + if (!testEmail) + { + var users = UserHelper.GetUsers(); // Get all users + if (users != null) + { + foreach (var user in users) + { + if (!string.IsNullOrEmpty(user.EmailAddress)) + { + message.Bcc.Add(new MailboxAddress(user.Username, user.EmailAddress)); // BCC everyone + } + } + } + } + message.Bcc.Add(new MailboxAddress(settings.EmailUsername, settings.RecipientEmail)); // Include the admin + + message.From.Add(new MailboxAddress(settings.EmailUsername, settings.EmailSender)); + SendMail(settings, message); + } + + // TODO Emby + private void SendNewsletter(NewletterSettings newletterSettings, string html, bool testEmail = false, string subject = "New Content on Plex!") { - Log.Debug("Entering Send"); + Log.Debug("Entering SendNewsletter"); var settings = EmailSettings.GetSettings(); if (!settings.Enabled || string.IsNullOrEmpty(settings.EmailHost)) @@ -506,6 +542,11 @@ namespace Ombi.Services.Jobs message.Bcc.Add(new MailboxAddress(settings.EmailUsername, settings.RecipientEmail)); // Include the admin message.From.Add(new MailboxAddress(settings.EmailUsername, settings.EmailSender)); + SendMail(settings, message); + } + + private void SendMail(EmailNotificationSettings settings, MimeMessage message) + { try { using (var client = new SmtpClient()) diff --git a/Ombi.UI/Modules/Admin/ScheduledJobsRunnerModule.cs b/Ombi.UI/Modules/Admin/ScheduledJobsRunnerModule.cs index a08bd056d..2fbe77eb0 100644 --- a/Ombi.UI/Modules/Admin/ScheduledJobsRunnerModule.cs +++ b/Ombi.UI/Modules/Admin/ScheduledJobsRunnerModule.cs @@ -142,7 +142,7 @@ namespace Ombi.UI.Modules.Admin } if (key.Equals(JobNames.RecentlyAddedEmail, StringComparison.CurrentCultureIgnoreCase)) { - RecentlyAdded.Start(); + RecentlyAdded.StartNewsLetter(); } if (key.Equals(JobNames.FaultQueueHandler, StringComparison.CurrentCultureIgnoreCase)) {