mirror of
https://github.com/Ombi-app/Ombi.git
synced 2025-07-13 16:52:56 -07:00
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
This commit is contained in:
parent
b2f13c4120
commit
ca516957fa
4 changed files with 40 additions and 21 deletions
|
@ -96,8 +96,6 @@ namespace Ombi.Notifications
|
|||
}
|
||||
|
||||
public async Task Send(NotificationMessage model, EmailNotificationSettings settings)
|
||||
{
|
||||
try
|
||||
{
|
||||
EnsureArg.IsNotNullOrEmpty(settings.SenderAddress);
|
||||
EnsureArg.IsNotNullOrEmpty(model.To);
|
||||
|
@ -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…
Add table
Add a link
Reference in a new issue