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.Lettermint;
|
||||||
using Mixtape.Mails.Dispatchers.Postmark;
|
|
||||||
using Mixtape.Mails.Dispatchers.Scaleway;
|
using Mixtape.Mails.Dispatchers.Scaleway;
|
||||||
|
|
||||||
namespace Mixtape.Mails;
|
namespace Mixtape.Mails;
|
||||||
@@ -22,8 +21,6 @@ public class MailOptions
|
|||||||
|
|
||||||
public string SenderName { get; set; }
|
public string SenderName { get; set; }
|
||||||
|
|
||||||
public PostmarkOptions Postmark { get; set; }
|
|
||||||
|
|
||||||
public ScalewayOptions Scaleway { get; set; }
|
public ScalewayOptions Scaleway { get; set; }
|
||||||
|
|
||||||
public LettermintOptions Lettermint { get; set; }
|
public LettermintOptions Lettermint { get; set; }
|
||||||
|
|||||||
@@ -1,5 +1,4 @@
|
|||||||
using Mixtape.Mails.Dispatchers;
|
using Mixtape.Mails.Dispatchers;
|
||||||
using Mixtape.Mails.Dispatchers.Postmark;
|
|
||||||
using Mixtape.Mails.Dispatchers.Scaleway;
|
using Mixtape.Mails.Dispatchers.Scaleway;
|
||||||
using Microsoft.Extensions.Configuration;
|
using Microsoft.Extensions.Configuration;
|
||||||
using Microsoft.Extensions.DependencyInjection;
|
using Microsoft.Extensions.DependencyInjection;
|
||||||
|
|||||||
@@ -17,7 +17,6 @@
|
|||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<PackageReference Include="Microsoft.Extensions.DependencyModel" Version="10.0.7" />
|
<PackageReference Include="Microsoft.Extensions.DependencyModel" Version="10.0.7" />
|
||||||
<PackageReference Include="FluentValidation" Version="12.1.1" />
|
<PackageReference Include="FluentValidation" Version="12.1.1" />
|
||||||
<PackageReference Include="Postmark" Version="5.3.0" />
|
|
||||||
<PackageReference Include="PowCapServer.Core" Version="2.0.1" />
|
<PackageReference Include="PowCapServer.Core" Version="2.0.1" />
|
||||||
<PackageReference Include="Seq.Extensions.Logging" Version="9.0.0" />
|
<PackageReference Include="Seq.Extensions.Logging" Version="9.0.0" />
|
||||||
<PackageReference Include="SixLabors.ImageSharp.Web" Version="3.2.0" />
|
<PackageReference Include="SixLabors.ImageSharp.Web" Version="3.2.0" />
|
||||||
|
|||||||
Reference in New Issue
Block a user