Make the newsletter BCC the users rather than creating a million newsletters (Hopefully will stop SMTP providers from marking as spam). This does mean that the custom user customization in the newsletter will no longer work

pull/2728/head
TidusJar 5 years ago
parent b2f13c4120
commit ca516957fa

@ -97,8 +97,6 @@ namespace Ombi.Notifications
public async Task Send(NotificationMessage model, EmailNotificationSettings settings)
{
try
{
EnsureArg.IsNotNullOrEmpty(settings.SenderAddress);
EnsureArg.IsNotNullOrEmpty(model.To);
EnsureArg.IsNotNullOrEmpty(model.Message);
@ -120,9 +118,18 @@ namespace Ombi.Notifications
Subject = model.Subject
};
message.From.Add(new MailboxAddress(string.IsNullOrEmpty(settings.SenderName) ? settings.SenderAddress : settings.SenderName, settings.SenderAddress));
message.To.Add(new MailboxAddress(model.To, model.To));
await Send(message, settings);
}
public async Task Send(MimeMessage message, EmailNotificationSettings settings)
{
try
{
message.From.Add(new MailboxAddress(string.IsNullOrEmpty(settings.SenderName) ? settings.SenderAddress : settings.SenderName, settings.SenderAddress));
using (var client = new SmtpClient())
{
if (settings.DisableCertificateChecking)

@ -1,4 +1,5 @@
using System.Threading.Tasks;
using MimeKit;
using Ombi.Notifications.Models;
using Ombi.Settings.Settings.Models.Notifications;
@ -8,5 +9,6 @@ namespace Ombi.Notifications
{
Task Send(NotificationMessage model, EmailNotificationSettings settings);
Task SendAdHoc(NotificationMessage model, EmailNotificationSettings settings);
Task Send(MimeMessage message, EmailNotificationSettings settings);
}
}

@ -105,13 +105,10 @@ namespace Ombi.Notifications
AdditionalInformation = opts?.AdditionalInformation ?? string.Empty;
}
public void SetupNewsletter(CustomizationSettings s, OmbiUser username)
public void SetupNewsletter(CustomizationSettings s)
{
ApplicationUrl = (s?.ApplicationUrl.HasValue() ?? false) ? s.ApplicationUrl : string.Empty;
ApplicationName = string.IsNullOrEmpty(s?.ApplicationName) ? "Ombi" : s?.ApplicationName;
RequestedUser = username.UserName;
UserName = username.UserName;
Alias = username.Alias.HasValue() ? username.Alias : username.UserName;
}
public void Setup(NotificationOptions opts, ChildRequests req, CustomizationSettings s, UserNotificationPreferences pref)

@ -9,6 +9,7 @@ using MailKit;
using Microsoft.AspNetCore.Identity;
using Microsoft.EntityFrameworkCore;
using Microsoft.Extensions.Logging;
using MimeKit;
using Ombi.Api.Lidarr;
using Ombi.Api.Lidarr.Models;
using Ombi.Api.TheMovieDb;
@ -24,6 +25,7 @@ using Ombi.Settings.Settings.Models.External;
using Ombi.Settings.Settings.Models.Notifications;
using Ombi.Store.Entities;
using Ombi.Store.Repository;
using ContentType = Ombi.Store.Entities.ContentType;
namespace Ombi.Schedule.Jobs.Ombi
{
@ -162,7 +164,23 @@ namespace Ombi.Schedule.Jobs.Ombi
Email = emails
});
}
var emailTasks = new List<Task>();
var messageContent = ParseTemplate(template, customization);
var email = new NewsletterTemplate();
var html = email.LoadTemplate(messageContent.Subject, messageContent.Message, body, customization.Logo);
var bodyBuilder = new BodyBuilder
{
HtmlBody = html,
};
var message = new MimeMessage
{
Body = bodyBuilder.ToMessageBody(),
Subject = messageContent.Subject
};
foreach (var user in users)
{
// Get the users to send it to
@ -170,17 +188,13 @@ namespace Ombi.Schedule.Jobs.Ombi
{
continue;
}
var messageContent = ParseTemplate(template, customization, user);
var email = new NewsletterTemplate();
var html = email.LoadTemplate(messageContent.Subject, messageContent.Message, body, customization.Logo);
emailTasks.Add(_email.Send(
new NotificationMessage { Message = html, Subject = messageContent.Subject, To = user.Email },
emailSettings));
// BCC the messages
message.Bcc.Add(new MailboxAddress(user.Email, user.Email));
}
// Send the email
await _email.Send(message, emailSettings);
// Now add all of this to the Recently Added log
var recentlyAddedLog = new HashSet<RecentlyAddedLog>();
foreach (var p in plexContentMoviesToSend)
@ -234,7 +248,6 @@ namespace Ombi.Schedule.Jobs.Ombi
});
}
await _recentlyAddedLog.AddRange(recentlyAddedLog);
await Task.WhenAll(emailTasks.ToArray());
}
else
{
@ -245,7 +258,7 @@ namespace Ombi.Schedule.Jobs.Ombi
{
continue;
}
var messageContent = ParseTemplate(template, customization, a);
var messageContent = ParseTemplate(template, customization);
var email = new NewsletterTemplate();
@ -305,12 +318,12 @@ namespace Ombi.Schedule.Jobs.Ombi
return itemsToReturn;
}
private NotificationMessageContent ParseTemplate(NotificationTemplates template, CustomizationSettings settings, OmbiUser username)
private NotificationMessageContent ParseTemplate(NotificationTemplates template, CustomizationSettings settings)
{
var resolver = new NotificationMessageResolver();
var curlys = new NotificationMessageCurlys();
curlys.SetupNewsletter(settings, username);
curlys.SetupNewsletter(settings);
return resolver.ParseMessage(template, curlys);
}

Loading…
Cancel
Save