remove postmark lib
This commit is contained in:
@@ -1,120 +0,0 @@
|
||||
using Microsoft.AspNetCore.Hosting;
|
||||
using Microsoft.Extensions.Hosting;
|
||||
using Microsoft.Extensions.Options;
|
||||
using PostmarkDotNet;
|
||||
using PostmarkDotNet.Model;
|
||||
|
||||
namespace Mixtape.Mails.Dispatchers.Postmark;
|
||||
|
||||
public class PostmarkDispatcher : IMailDispatcher
|
||||
{
|
||||
protected PostmarkClient Postmark { get; set; }
|
||||
|
||||
protected PostmarkAdminClient PostmarkAdmin { get; set; }
|
||||
|
||||
protected MailOptions Options { get; set; }
|
||||
|
||||
protected IWebHostEnvironment Env { get; set; }
|
||||
|
||||
|
||||
public PostmarkDispatcher(IOptionsMonitor<MailOptions> monitor, IWebHostEnvironment env)
|
||||
{
|
||||
Options = monitor.CurrentValue;
|
||||
PostmarkOptions opts = Options.Postmark ?? new();
|
||||
Postmark = new(opts.ServerToken);
|
||||
PostmarkAdmin = new(opts.AccountToken);
|
||||
Env = env;
|
||||
|
||||
monitor.OnChange(_opts =>
|
||||
{
|
||||
Options = _opts;
|
||||
Postmark = new(_opts.Postmark?.ServerToken);
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
/// <inheritdoc />
|
||||
public async Task<bool> IsSenderSupported(string email)
|
||||
{
|
||||
if (email.IsNullOrWhiteSpace() || Options.Postmark.AccountToken.IsNullOrEmpty())
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
try
|
||||
{
|
||||
email = email.FullTrim();
|
||||
PostmarkSenderSignatureList signatures = await PostmarkAdmin.GetSenderSignaturesAsync();
|
||||
return signatures.SenderSignatures.Any(x => x.Confirmed && x.EmailAddress.Equals(email, StringComparison.InvariantCultureIgnoreCase));
|
||||
}
|
||||
catch
|
||||
{
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/// <inheritdoc />
|
||||
public async Task Send(Mail message, CancellationToken token = default)
|
||||
{
|
||||
PostmarkMessage data = new()
|
||||
{
|
||||
// to addresses
|
||||
To = message.To.ToString(),
|
||||
Cc = message.CC.ToString(),
|
||||
Bcc = message.Bcc.ToString(),
|
||||
|
||||
// from address
|
||||
From = message.From.ToString(),
|
||||
ReplyTo = message.ReplyToList.ToString(),
|
||||
|
||||
// subject
|
||||
Subject = message.Subject,
|
||||
|
||||
// tracking
|
||||
TrackLinks = LinkTrackingOptions.None,
|
||||
TrackOpens = false,
|
||||
|
||||
// configuration
|
||||
MessageStream = Options.Postmark.MessageStream,
|
||||
//Tag = message.Template?.Key,
|
||||
Metadata = message.Metadata
|
||||
};
|
||||
|
||||
// set attachments
|
||||
foreach (System.Net.Mail.Attachment attachment in message.Attachments)
|
||||
{
|
||||
data.AddAttachment(attachment.ContentStream, attachment.Name, attachment.ContentType.MediaType, attachment.ContentId);
|
||||
}
|
||||
|
||||
// set body
|
||||
if (!message.IsBodyHtml)
|
||||
{
|
||||
data.TextBody = message.Body;
|
||||
}
|
||||
else
|
||||
{
|
||||
data.HtmlBody = message.Body;
|
||||
}
|
||||
|
||||
// finally sends the message
|
||||
PostmarkResponse response = await Postmark.SendMessageAsync(data);
|
||||
|
||||
if (response.ErrorCode > 0)
|
||||
{
|
||||
throw new PostmarkSendException($"Could not send message via Postmark API. Code: {response.ErrorCode}, Message: {response.Message}");
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/// <inheritdoc />
|
||||
public void Dispose() { }
|
||||
}
|
||||
|
||||
|
||||
public class PostmarkSendException : Exception
|
||||
{
|
||||
public PostmarkSendException() : base() { }
|
||||
|
||||
public PostmarkSendException(string message) : base(message) { }
|
||||
}
|
||||
@@ -1,10 +0,0 @@
|
||||
namespace Mixtape.Mails.Dispatchers.Postmark;
|
||||
|
||||
public class PostmarkOptions
|
||||
{
|
||||
public string ServerToken { get; set; }
|
||||
|
||||
public string AccountToken { get; set; }
|
||||
|
||||
public string MessageStream { get; set; } = "outbound";
|
||||
}
|
||||
@@ -1,5 +1,4 @@
|
||||
using Mixtape.Mails.Dispatchers.Lettermint;
|
||||
using Mixtape.Mails.Dispatchers.Postmark;
|
||||
using Mixtape.Mails.Dispatchers.Scaleway;
|
||||
|
||||
namespace Mixtape.Mails;
|
||||
@@ -22,8 +21,6 @@ public class MailOptions
|
||||
|
||||
public string SenderName { get; set; }
|
||||
|
||||
public PostmarkOptions Postmark { get; set; }
|
||||
|
||||
public ScalewayOptions Scaleway { get; set; }
|
||||
|
||||
public LettermintOptions Lettermint { get; set; }
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
using Mixtape.Mails.Dispatchers;
|
||||
using Mixtape.Mails.Dispatchers.Postmark;
|
||||
using Mixtape.Mails.Dispatchers.Scaleway;
|
||||
using Microsoft.Extensions.Configuration;
|
||||
using Microsoft.Extensions.DependencyInjection;
|
||||
|
||||
@@ -17,7 +17,6 @@
|
||||
<ItemGroup>
|
||||
<PackageReference Include="Microsoft.Extensions.DependencyModel" Version="10.0.7" />
|
||||
<PackageReference Include="FluentValidation" Version="12.1.1" />
|
||||
<PackageReference Include="Postmark" Version="5.3.0" />
|
||||
<PackageReference Include="PowCapServer.Core" Version="2.0.1" />
|
||||
<PackageReference Include="Seq.Extensions.Logging" Version="9.0.0" />
|
||||
<PackageReference Include="SixLabors.ImageSharp.Web" Version="3.2.0" />
|
||||
|
||||
Reference in New Issue
Block a user