diff options
author | vnugent <public@vaughnnugent.com> | 2023-08-28 21:54:26 -0400 |
---|---|---|
committer | vnugent <public@vaughnnugent.com> | 2023-08-28 21:54:26 -0400 |
commit | b153adbd86e226ad805c2edbb90e4032d386a1b0 (patch) | |
tree | 9d3e5d7f2966c66e0264001cb38c67f74d6cf707 /lib/Emails.Transactional.Plugin/src/Mta/MailTransferAgent.cs | |
parent | 964e81b81cdb430ecee8f67a68e3c616b3f339aa (diff) |
Refactor overhaul, data extensions & Resend.com support
Diffstat (limited to 'lib/Emails.Transactional.Plugin/src/Mta/MailTransferAgent.cs')
-rw-r--r-- | lib/Emails.Transactional.Plugin/src/Mta/MailTransferAgent.cs | 57 |
1 files changed, 57 insertions, 0 deletions
diff --git a/lib/Emails.Transactional.Plugin/src/Mta/MailTransferAgent.cs b/lib/Emails.Transactional.Plugin/src/Mta/MailTransferAgent.cs new file mode 100644 index 0000000..ed74646 --- /dev/null +++ b/lib/Emails.Transactional.Plugin/src/Mta/MailTransferAgent.cs @@ -0,0 +1,57 @@ +/* +* Copyright (c) 2023 Vaughn Nugent +* +* Library: VNLib +* Package: Emails.Transactional +* File: MailTransferAgent.cs +* +* MailTransferAgent.cs is part of Emails.Transactional which is part of the larger +* VNLib collection of libraries and utilities. +* +* Emails.Transactional is free software: you can redistribute it and/or modify +* it under the terms of the GNU General Public License as published +* by the Free Software Foundation, either version 2 of the License, +* or (at your option) any later version. +* +* Emails.Transactional is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +* General Public License for more details. +* +* You should have received a copy of the GNU General Public License +* along with Emails.Transactional. If not, see http://www.gnu.org/licenses/. +*/ + +using System; +using System.Threading; +using System.Threading.Tasks; + +using VNLib.Plugins; +using VNLib.Plugins.Extensions.Loading; + +namespace Emails.Transactional.Mta +{ + [ConfigurationName("mta")] + internal sealed class MailTransferAgent: IMailTransferAgent + { + private readonly IMailTransferAgent _agent; + + public MailTransferAgent(PluginBase plugin, IConfigScope config) + { + //Recover config + string? agentType = config.GetRequiredProperty("type", e => e.GetString())?.ToLowerInvariant(); + + _agent = agentType switch + { + "smtp" => plugin.GetOrCreateSingleton<SmtpProvider>(), + "resend" => plugin.GetOrCreateSingleton<ResendMta>(), + _ => throw new NotSupportedException("The specified MTA type is not supported"), + }; + } + + public Task<MtaResult> SendEmailAsync(EmailTransaction transaction, IEmailMessageData message, CancellationToken cancellation = default) + { + return _agent.SendEmailAsync(transaction, message, cancellation); + } + } +} |