refactor(api): Update EmailsController and EmailSenderWorker for simplified email sending

This commit is contained in:
2026-07-23 11:20:09 +02:00
parent 0adc74e19f
commit 658040bd96
2 changed files with 15 additions and 15 deletions

View File

@@ -23,15 +23,14 @@ public class EmailsController(IMediator mediator) : ControllerBase
[ProducesResponseType(StatusCodes.Status400BadRequest)]
public async Task<IActionResult> SendEmail([FromBody] SendEmailCommand command, CancellationToken cancellationToken)
{
var emailOutboxId = await mediator.Send(command, cancellationToken);
var outgoingEmailEvent = await mediator.Send(command, cancellationToken);
return Accepted(new
{
Message = "Email queued for sending",
EmailOutboxId = emailOutboxId,
To = command.Recipient,
command.Subject,
QueuedAt = DateTime.Now
CommandId = outgoingEmailEvent.Id,
To = outgoingEmailEvent.Recipient,
outgoingEmailEvent.Subject,
outgoingEmailEvent.QueuedAt
});
}
}

View File

@@ -1,5 +1,6 @@
using DigitalData.EmailProfiler.Application.Common.Events;
using DigitalData.EmailProfiler.Application.Common.Interfaces;
using DigitalData.EmailProfiler.Domain.Entities;
using DigitalData.EmailProfiler.Application.EmailSending.Commands;
namespace DigitalData.EmailProfiler.API.Workers;
@@ -53,27 +54,27 @@ public class EmailSenderWorker(
/// Process single email message (callback from RabbitMQ consumer)
/// NO database operations - only send email and log result
/// </summary>
private async Task ProcessEmailAsync(EmailOutbox emailOutbox)
private async Task ProcessEmailAsync(OutgoingEmailEvent outgoingEmailEvent)
{
try
{
Logger.LogInformation("Processing outgoing email: To={To}, Subject={Subject}",
emailOutbox.Recipient, emailOutbox.Subject);
outgoingEmailEvent.Recipient, outgoingEmailEvent.Subject);
// Send email via SMTP (SMTP config is injected in IEmailService via IOptions)
await EmailService.SendEmailAsync(
emailOutbox.Recipient,
emailOutbox.Subject,
emailOutbox.Body,
isHtml: emailOutbox.IsHtml);
outgoingEmailEvent.Recipient,
outgoingEmailEvent.Subject,
outgoingEmailEvent.Body,
isHtml: outgoingEmailEvent.IsHtml);
Logger.LogInformation("Email sent successfully: To={To}, Subject={Subject}",
emailOutbox.Recipient, emailOutbox.Subject);
outgoingEmailEvent.Recipient, outgoingEmailEvent.Subject);
}
catch (Exception ex)
{
Logger.LogError(ex, "Failed to send email: To={To}, Subject={Subject}. Moving to DLQ.",
emailOutbox.Recipient, emailOutbox.Subject);
outgoingEmailEvent.Recipient, outgoingEmailEvent.Subject);
// Re-throw to trigger NACK in RabbitMQ consumer (requeue=false → DLQ)
throw;