Skip to content
Merged
Show file tree
Hide file tree
Changes from 2 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@
using Microsoft.AspNetCore.Hosting;
using Microsoft.Extensions.Logging;

namespace Bit.Core.Services;
namespace Bit.Core.Services.Mail.Delivery;

public class AmazonSesMailDeliveryService : IMailDeliveryService, IDisposable
{
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
using Bit.Core.Models.Mail;

namespace Bit.Core.Services;
namespace Bit.Core.Services.Mail.Delivery;

public interface IMailDeliveryService
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
using Microsoft.Extensions.Logging;
using MimeKit;

namespace Bit.Core.Services;
namespace Bit.Core.Services.Mail.Delivery;

public class MailKitSmtpMailDeliveryService : IMailDeliveryService
{
Expand Down Expand Up @@ -81,7 +81,7 @@
{
if (_globalSettings.Mail.Smtp.TrustServer)
{
client.ServerCertificateValidationCallback = (s, c, h, e) => true;

Check warning on line 84 in src/Core/Platform/Mail/Delivery/MailKitSmtpMailDeliveryService.cs

View workflow job for this annotation

GitHub Actions / Sonar / Quality scan

Enable server certificate validation on this SSL/TLS connection (https://rules.sonarsource.com/csharp/RSPEC-4830)
}

if (!_globalSettings.Mail.Smtp.StartTls && !_globalSettings.Mail.Smtp.Ssl &&
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
using Microsoft.AspNetCore.Hosting;
using Microsoft.Extensions.Logging;

namespace Bit.Core.Services;
namespace Bit.Core.Services.Mail.Delivery;

public class MultiServiceMailDeliveryService : IMailDeliveryService
{
Expand All @@ -11,7 +11,7 @@
private readonly IMailDeliveryService _sendGridService;
private readonly int _sendGridPercentage;

private static Random _random = new Random();

Check warning on line 14 in src/Core/Platform/Mail/Delivery/MultiServiceMailDeliveryService.cs

View workflow job for this annotation

GitHub Actions / Sonar / Quality scan

Make sure that using this pseudorandom number generator is safe here. (https://rules.sonarsource.com/csharp/RSPEC-2245)

public MultiServiceMailDeliveryService(
GlobalSettings globalSettings,
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
using Bit.Core.Models.Mail;

namespace Bit.Core.Services;
namespace Bit.Core.Services.Mail.Delivery;

public class NoopMailDeliveryService : IMailDeliveryService
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
using SendGrid;
using SendGrid.Helpers.Mail;

namespace Bit.Core.Services;
namespace Bit.Core.Services.Mail.Delivery;

public class SendGridMailDeliveryService : IMailDeliveryService, IDisposable
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
using Bit.Core.Settings;
using Bit.Core.Utilities;

namespace Bit.Core.Services;
namespace Bit.Core.Services.Mail.Enqueuing;

public class AzureQueueMailService : AzureQueueService<IMailQueueMessage>, IMailEnqueuingService
{
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
using Bit.Core.Models.Mail;

namespace Bit.Core.Services;
namespace Bit.Core.Services.Mail.Enqueuing;

public class BlockingMailEnqueuingService : IMailEnqueuingService
{
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
using Bit.Core.Models.Mail;

namespace Bit.Core.Services;
namespace Bit.Core.Services.Mail.Enqueuing;

public interface IMailEnqueuingService
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,8 @@
using Bit.Core.Models.Mail.FamiliesForEnterprise;
using Bit.Core.Models.Mail.Provider;
using Bit.Core.SecretsManager.Models.Mail;
using Bit.Core.Services.Mail.Delivery;
using Bit.Core.Services.Mail.Enqueuing;
using Bit.Core.Settings;
using Bit.Core.Utilities;
using Bit.Core.Vault.Models.Data;
Expand All @@ -28,7 +30,7 @@
using Microsoft.Extensions.Caching.Distributed;
using Microsoft.Extensions.Logging;

namespace Bit.Core.Services;
namespace Bit.Core.Services.Mail;

public class HandlebarsMailService : IMailService
{
Expand Down
10 changes: 10 additions & 0 deletions src/Core/Platform/Mail/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
# Mail Service

> [!CAUTION]
> Adding new methods to the `HandlebarsMailService` is no longer the recommended approach to building and sending emails. Instead, the [Mailer](../Mailer/README.md) implementation is preferred, along with the [MJML](../../MailTemplates/README.md) pipeline.

# Overriding email templates from disk

The `HandlebarsMailService` supports loading the mail template from disk. This is intended to be used by self-hosted customers who want to modify their email appearance.

However, any customer doing so acknowledges that they are responsible for reacting to any changes made to the templates as a part of the Bitwarden development process. This includes, but is not limited to, changes in Handlebars property names, removal of properties from the `ViewModel` classes, and changes in template names. **Bitwarden is not responsible for maintaining backward compatibility between releases in order to support any overridden emails.**
2 changes: 1 addition & 1 deletion src/Core/Platform/Mailer/Mailer.cs
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
using Bit.Core.Models.Mail;
using Bit.Core.Services;
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Why does mailer go to it's own namespace and not just in ..Services.Mail, for example?

using Bit.Core.Services.Mail.Delivery;

namespace Bit.Core.Platform.Mailer;

Expand Down
3 changes: 3 additions & 0 deletions src/SharedWeb/Utilities/ServiceCollectionExtensions.cs
Original file line number Diff line number Diff line change
Expand Up @@ -47,6 +47,9 @@
using Bit.Core.SecretsManager.Repositories.Noop;
using Bit.Core.Services;
using Bit.Core.Services.Implementations;
using Bit.Core.Services.Mail;
using Bit.Core.Services.Mail.Delivery;
using Bit.Core.Services.Mail.Enqueuing;
using Bit.Core.Settings;
using Bit.Core.Tokens;
using Bit.Core.Tools.ImportFeatures;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
using System.Security.Cryptography;
using System.Security.Cryptography.X509Certificates;
using Bit.Core.Models.Mail;
using Bit.Core.Services;
using Bit.Core.Services.Mail.Delivery;
using Bit.Core.Settings;
using MailKit.Security;
using Microsoft.Extensions.Logging;
Expand Down
2 changes: 1 addition & 1 deletion test/Core.Test/Platform/Mailer/MailerTest.cs
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
using Bit.Core.Models.Mail;
using Bit.Core.Platform.Mailer;
using Bit.Core.Services;
using Bit.Core.Services.Mail.Delivery;
using Bit.Core.Test.Platform.Mailer.TestMail;
using NSubstitute;
using Xunit;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
using Amazon.SimpleEmail;
using Amazon.SimpleEmail.Model;
using Bit.Core.Models.Mail;
using Bit.Core.Services;
using Bit.Core.Services.Mail.Delivery;
using Bit.Core.Settings;
using Microsoft.AspNetCore.Hosting;
using Microsoft.Extensions.Logging;
Expand Down
3 changes: 3 additions & 0 deletions test/Core.Test/Services/HandlebarsMailServiceTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,9 @@
using Bit.Core.Entities;
using Bit.Core.Models.Mail;
using Bit.Core.Services;
using Bit.Core.Services.Mail;
using Bit.Core.Services.Mail.Delivery;
using Bit.Core.Services.Mail.Enqueuing;
using Bit.Core.Settings;
using Microsoft.Extensions.Caching.Distributed;
using Microsoft.Extensions.Logging;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
using Bit.Core.Services;
using Bit.Core.Services.Mail.Delivery;
using Bit.Core.Settings;
using Microsoft.Extensions.Logging;
using NSubstitute;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
using Bit.Core.Models.Mail;
using Bit.Core.Services;
using Bit.Core.Services.Mail.Delivery;
using Bit.Core.Settings;
using Microsoft.AspNetCore.Hosting;
using Microsoft.Extensions.Logging;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
using Bit.Core.Platform.PushRegistration.Internal;
using Bit.Core.Repositories;
using Bit.Core.Services;
using Bit.Core.Services.Mail.Delivery;
using Bit.Infrastructure.EntityFramework.Repositories;
using Microsoft.AspNetCore.Hosting;
using Microsoft.AspNetCore.Mvc.Testing;
Expand Down
Loading