using Microsoft.Extensions.Logging; namespace zero.Mails; /// /// Default implementation of an IMailSender which sends the mail to the attached logger /// and therefore not using the SMTP channel. /// Implementing real mail sending is up to the consuming application. /// public class LoggerMailDispatcher : IMailDispatcher { protected Queue Queue { get; private set; } = new Queue(); protected ILogger Logger { get; set; } public LoggerMailDispatcher(ILogger logger) { Logger = logger; } /// public void Enqueue(Mail message) { Queue.Enqueue(message); } /// public Task Send(CancellationToken token = default) { while (Queue.Count > 0) { Mail message = Queue.Dequeue(); Logger.LogInformation("Mail to {to}. Subject: {subject}", message.To[0].Address, message.Subject); } return Task.CompletedTask; } /// public void Dispose() { } }