PlanTempusApp/Core/Email/PostmarkEmailService.cs
Janus C. H. Knudsen 54b057886c Adds transactional outbox and email verification
Implements outbox pattern for reliable message delivery
Adds email verification flow with Postmark integration
Enhances account registration with secure token generation

Introduces background processing for asynchronous email sending
Implements database-level notification mechanism for message processing
2026-01-10 11:13:33 +01:00

41 lines
1,016 B
C#

using PostmarkDotNet;
namespace PlanTempus.Core.Email;
public class PostmarkEmailService : IEmailService
{
private readonly PostmarkConfiguration _config;
private readonly PostmarkClient _client;
public PostmarkEmailService(PostmarkConfiguration config)
{
_config = config;
_client = new PostmarkClient(config.ServerToken);
}
public async Task<EmailResult> SendVerificationEmailAsync(string toEmail, string userName, string verifyUrl)
{
var recipient = _config.TestToEmail ?? toEmail;
var message = new TemplatedPostmarkMessage
{
From = _config.FromEmail,
To = recipient,
TemplateAlias = "code-your-own-1",
TemplateModel = new Dictionary<string, object>
{
{ "USER_NAME", userName },
{ "VERIFY_URL", verifyUrl }
}
};
var response = await _client.SendMessageAsync(message);
if (response.Status == PostmarkStatus.Success)
{
return new EmailResult(true, response.MessageID.ToString(), null);
}
return new EmailResult(false, null, response.Message);
}
}