feat: consume transactional email notifications
Add contract validation, SMTP delivery results, terminal failure context, neutral development seeding, and local Docker setup. Ref: IT-1033
This commit is contained in:
+12
@@ -8,6 +8,18 @@ internal sealed class EmailTemplateRenderingService : IEmailTemplateRenderingSer
|
||||
{
|
||||
public RenderedEmail Render(EmailTemplate template, SendEmailMessageData data)
|
||||
{
|
||||
string[] missingVariables = template.Variables
|
||||
.Where(variable => variable.Required)
|
||||
.Select(variable => variable.Name)
|
||||
.Where(name => !data.Variables.TryGetValue(name, out string? value) || string.IsNullOrWhiteSpace(value))
|
||||
.ToArray();
|
||||
|
||||
if (missingVariables.Length > 0)
|
||||
{
|
||||
throw new InvalidDataException(
|
||||
$"Required template variables are missing: {string.Join(", ", missingVariables)}.");
|
||||
}
|
||||
|
||||
return new RenderedEmail(
|
||||
Interpolate(template.Subject, data.Variables),
|
||||
Interpolate(template.HtmlBody, data.Variables),
|
||||
|
||||
Reference in New Issue
Block a user