mirror of
https://github.com/bitwarden/server.git
synced 2025-07-02 00:22:50 -05:00
Run formatting (#2230)
This commit is contained in:
@ -4,98 +4,97 @@ using MailKit.Net.Smtp;
|
||||
using Microsoft.Extensions.Logging;
|
||||
using MimeKit;
|
||||
|
||||
namespace Bit.Core.Services
|
||||
namespace Bit.Core.Services;
|
||||
|
||||
public class MailKitSmtpMailDeliveryService : IMailDeliveryService
|
||||
{
|
||||
public class MailKitSmtpMailDeliveryService : IMailDeliveryService
|
||||
private readonly GlobalSettings _globalSettings;
|
||||
private readonly ILogger<MailKitSmtpMailDeliveryService> _logger;
|
||||
private readonly string _replyDomain;
|
||||
private readonly string _replyEmail;
|
||||
|
||||
public MailKitSmtpMailDeliveryService(
|
||||
GlobalSettings globalSettings,
|
||||
ILogger<MailKitSmtpMailDeliveryService> logger)
|
||||
{
|
||||
private readonly GlobalSettings _globalSettings;
|
||||
private readonly ILogger<MailKitSmtpMailDeliveryService> _logger;
|
||||
private readonly string _replyDomain;
|
||||
private readonly string _replyEmail;
|
||||
|
||||
public MailKitSmtpMailDeliveryService(
|
||||
GlobalSettings globalSettings,
|
||||
ILogger<MailKitSmtpMailDeliveryService> logger)
|
||||
if (globalSettings.Mail?.Smtp?.Host == null)
|
||||
{
|
||||
if (globalSettings.Mail?.Smtp?.Host == null)
|
||||
{
|
||||
throw new ArgumentNullException(nameof(globalSettings.Mail.Smtp.Host));
|
||||
}
|
||||
|
||||
_replyEmail = CoreHelpers.PunyEncode(globalSettings.Mail?.ReplyToEmail);
|
||||
|
||||
if (_replyEmail.Contains("@"))
|
||||
{
|
||||
_replyDomain = _replyEmail.Split('@')[1];
|
||||
}
|
||||
|
||||
_globalSettings = globalSettings;
|
||||
_logger = logger;
|
||||
throw new ArgumentNullException(nameof(globalSettings.Mail.Smtp.Host));
|
||||
}
|
||||
|
||||
public async Task SendEmailAsync(Models.Mail.MailMessage message)
|
||||
{
|
||||
var mimeMessage = new MimeMessage();
|
||||
mimeMessage.From.Add(new MailboxAddress(_globalSettings.SiteName, _replyEmail));
|
||||
mimeMessage.Subject = message.Subject;
|
||||
if (!string.IsNullOrWhiteSpace(_replyDomain))
|
||||
{
|
||||
mimeMessage.MessageId = $"<{Guid.NewGuid()}@{_replyDomain}>";
|
||||
}
|
||||
_replyEmail = CoreHelpers.PunyEncode(globalSettings.Mail?.ReplyToEmail);
|
||||
|
||||
foreach (var address in message.ToEmails)
|
||||
if (_replyEmail.Contains("@"))
|
||||
{
|
||||
_replyDomain = _replyEmail.Split('@')[1];
|
||||
}
|
||||
|
||||
_globalSettings = globalSettings;
|
||||
_logger = logger;
|
||||
}
|
||||
|
||||
public async Task SendEmailAsync(Models.Mail.MailMessage message)
|
||||
{
|
||||
var mimeMessage = new MimeMessage();
|
||||
mimeMessage.From.Add(new MailboxAddress(_globalSettings.SiteName, _replyEmail));
|
||||
mimeMessage.Subject = message.Subject;
|
||||
if (!string.IsNullOrWhiteSpace(_replyDomain))
|
||||
{
|
||||
mimeMessage.MessageId = $"<{Guid.NewGuid()}@{_replyDomain}>";
|
||||
}
|
||||
|
||||
foreach (var address in message.ToEmails)
|
||||
{
|
||||
var punyencoded = CoreHelpers.PunyEncode(address);
|
||||
mimeMessage.To.Add(MailboxAddress.Parse(punyencoded));
|
||||
}
|
||||
|
||||
if (message.BccEmails != null)
|
||||
{
|
||||
foreach (var address in message.BccEmails)
|
||||
{
|
||||
var punyencoded = CoreHelpers.PunyEncode(address);
|
||||
mimeMessage.To.Add(MailboxAddress.Parse(punyencoded));
|
||||
mimeMessage.Bcc.Add(MailboxAddress.Parse(punyencoded));
|
||||
}
|
||||
}
|
||||
|
||||
if (message.BccEmails != null)
|
||||
var builder = new BodyBuilder();
|
||||
if (!string.IsNullOrWhiteSpace(message.TextContent))
|
||||
{
|
||||
builder.TextBody = message.TextContent;
|
||||
}
|
||||
builder.HtmlBody = message.HtmlContent;
|
||||
mimeMessage.Body = builder.ToMessageBody();
|
||||
|
||||
using (var client = new SmtpClient())
|
||||
{
|
||||
if (_globalSettings.Mail.Smtp.TrustServer)
|
||||
{
|
||||
foreach (var address in message.BccEmails)
|
||||
{
|
||||
var punyencoded = CoreHelpers.PunyEncode(address);
|
||||
mimeMessage.Bcc.Add(MailboxAddress.Parse(punyencoded));
|
||||
}
|
||||
client.ServerCertificateValidationCallback = (s, c, h, e) => true;
|
||||
}
|
||||
|
||||
var builder = new BodyBuilder();
|
||||
if (!string.IsNullOrWhiteSpace(message.TextContent))
|
||||
if (!_globalSettings.Mail.Smtp.StartTls && !_globalSettings.Mail.Smtp.Ssl &&
|
||||
_globalSettings.Mail.Smtp.Port == 25)
|
||||
{
|
||||
builder.TextBody = message.TextContent;
|
||||
await client.ConnectAsync(_globalSettings.Mail.Smtp.Host, _globalSettings.Mail.Smtp.Port,
|
||||
MailKit.Security.SecureSocketOptions.None);
|
||||
}
|
||||
builder.HtmlBody = message.HtmlContent;
|
||||
mimeMessage.Body = builder.ToMessageBody();
|
||||
|
||||
using (var client = new SmtpClient())
|
||||
else
|
||||
{
|
||||
if (_globalSettings.Mail.Smtp.TrustServer)
|
||||
{
|
||||
client.ServerCertificateValidationCallback = (s, c, h, e) => true;
|
||||
}
|
||||
|
||||
if (!_globalSettings.Mail.Smtp.StartTls && !_globalSettings.Mail.Smtp.Ssl &&
|
||||
_globalSettings.Mail.Smtp.Port == 25)
|
||||
{
|
||||
await client.ConnectAsync(_globalSettings.Mail.Smtp.Host, _globalSettings.Mail.Smtp.Port,
|
||||
MailKit.Security.SecureSocketOptions.None);
|
||||
}
|
||||
else
|
||||
{
|
||||
var useSsl = _globalSettings.Mail.Smtp.Port == 587 && !_globalSettings.Mail.Smtp.SslOverride ?
|
||||
false : _globalSettings.Mail.Smtp.Ssl;
|
||||
await client.ConnectAsync(_globalSettings.Mail.Smtp.Host, _globalSettings.Mail.Smtp.Port, useSsl);
|
||||
}
|
||||
|
||||
if (CoreHelpers.SettingHasValue(_globalSettings.Mail.Smtp.Username) &&
|
||||
CoreHelpers.SettingHasValue(_globalSettings.Mail.Smtp.Password))
|
||||
{
|
||||
await client.AuthenticateAsync(_globalSettings.Mail.Smtp.Username,
|
||||
_globalSettings.Mail.Smtp.Password);
|
||||
}
|
||||
|
||||
await client.SendAsync(mimeMessage);
|
||||
await client.DisconnectAsync(true);
|
||||
var useSsl = _globalSettings.Mail.Smtp.Port == 587 && !_globalSettings.Mail.Smtp.SslOverride ?
|
||||
false : _globalSettings.Mail.Smtp.Ssl;
|
||||
await client.ConnectAsync(_globalSettings.Mail.Smtp.Host, _globalSettings.Mail.Smtp.Port, useSsl);
|
||||
}
|
||||
|
||||
if (CoreHelpers.SettingHasValue(_globalSettings.Mail.Smtp.Username) &&
|
||||
CoreHelpers.SettingHasValue(_globalSettings.Mail.Smtp.Password))
|
||||
{
|
||||
await client.AuthenticateAsync(_globalSettings.Mail.Smtp.Username,
|
||||
_globalSettings.Mail.Smtp.Password);
|
||||
}
|
||||
|
||||
await client.SendAsync(mimeMessage);
|
||||
await client.DisconnectAsync(true);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user