1
0
mirror of https://github.com/bitwarden/server synced 2025-12-21 02:33:30 +00:00

New mail services and implementations

This commit is contained in:
Kyle Spearrin
2017-05-30 17:19:46 -04:00
parent 72ac5c9f80
commit 07c5f45ae0
19 changed files with 549 additions and 160 deletions

View File

@@ -0,0 +1,62 @@
using System;
using System.Collections.Generic;
using System.Threading.Tasks;
using SendGrid;
using SendGrid.Helpers.Mail;
using Bit.Core.Models.Mail;
using System.Linq;
namespace Bit.Core.Services
{
public class SendGridMailDeliveryService : IMailDeliveryService
{
private readonly GlobalSettings _globalSettings;
private readonly SendGridClient _client;
public SendGridMailDeliveryService(GlobalSettings globalSettings)
{
_globalSettings = globalSettings;
_client = new SendGridClient(_globalSettings.Mail.ApiKey);
}
public async Task SendEmailAsync(MailMessage message)
{
var sendGridMessage = new SendGridMessage
{
Subject = message.Subject,
From = new EmailAddress(_globalSettings.Mail.ReplyToEmail, _globalSettings.SiteName),
HtmlContent = message.HtmlContent,
PlainTextContent = message.TextContent,
};
sendGridMessage.AddTos(message.ToEmails.Select(e => new EmailAddress(e)).ToList());
if(message.MetaData.ContainsKey("SendGridTemplateId"))
{
sendGridMessage.HtmlContent = " ";
sendGridMessage.PlainTextContent = " ";
sendGridMessage.TemplateId = message.MetaData["SendGridTemplateId"].ToString();
}
if(message.MetaData.ContainsKey("SendGridSubstitutions"))
{
var subs = message.MetaData["SendGridSubstitutions"] as Dictionary<string, string>;
sendGridMessage.AddSubstitutions(subs);
}
if(message.MetaData.ContainsKey("SendGridCategories"))
{
var cats = message.MetaData["SendGridCategories"] as List<string>;
sendGridMessage.AddCategories(cats);
}
if(message.MetaData.ContainsKey("SendGridBypassListManagement"))
{
var bypass = message.MetaData["SendGridBypassListManagement"] as bool?;
sendGridMessage.SetBypassListManagement(bypass.GetValueOrDefault(false));
}
await _client.SendEmailAsync(sendGridMessage);
}
}
}