mirror of
https://github.com/bitwarden/server.git
synced 2025-04-25 06:42:22 -05:00

* adds suppose for postal and multi service mail delivery * adjust tags * dont need settings checks in multi-service
48 lines
1.6 KiB
C#
48 lines
1.6 KiB
C#
using System;
|
|
using System.Threading.Tasks;
|
|
using Microsoft.Extensions.Logging;
|
|
using Bit.Core.Settings;
|
|
using Microsoft.AspNetCore.Hosting;
|
|
using System.Net.Http;
|
|
using Bit.Core.Models.Mail;
|
|
|
|
namespace Bit.Core.Services
|
|
{
|
|
public class MultiServiceMailDeliveryService : IMailDeliveryService
|
|
{
|
|
private readonly IMailDeliveryService _sesService;
|
|
private readonly IMailDeliveryService _postalService;
|
|
private readonly int _postalPercentage;
|
|
|
|
private static Random _random = new Random();
|
|
|
|
public MultiServiceMailDeliveryService(
|
|
GlobalSettings globalSettings,
|
|
IWebHostEnvironment hostingEnvironment,
|
|
IHttpClientFactory httpClientFactory,
|
|
ILogger<AmazonSesMailDeliveryService> sesLogger,
|
|
ILogger<PostalMailDeliveryService> postalLogger)
|
|
{
|
|
_sesService = new AmazonSesMailDeliveryService(globalSettings, hostingEnvironment, sesLogger);
|
|
_postalService = new PostalMailDeliveryService(globalSettings, postalLogger, hostingEnvironment,
|
|
httpClientFactory);
|
|
|
|
// 2% by default
|
|
_postalPercentage = (globalSettings.Mail?.PostalPercentage).GetValueOrDefault(2);
|
|
}
|
|
|
|
public async Task SendEmailAsync(MailMessage message)
|
|
{
|
|
var roll = _random.Next(0, 99);
|
|
if (roll < _postalPercentage)
|
|
{
|
|
await _postalService.SendEmailAsync(message);
|
|
}
|
|
else
|
|
{
|
|
await _sesService.SendEmailAsync(message);
|
|
}
|
|
}
|
|
}
|
|
}
|