diff --git a/Wave/Program.cs b/Wave/Program.cs index e56a886..7f9cc7c 100644 --- a/Wave/Program.cs +++ b/Wave/Program.cs @@ -178,14 +178,14 @@ var emailConfig = builder.Configuration.GetSection("Email").Get(); builder.Services.Configure(builder.Configuration.GetSection("Email")); +builder.Services.AddSingleton(); +builder.Services.AddScoped(); if (emailConfig?.Smtp.Count > 0) { if (string.IsNullOrWhiteSpace(emailConfig.SenderEmail)) { throw new ApplicationException( "Email providers have been configured, but no SenderEmail. " + "Please provider the sender email address used for email distribution."); } - builder.Services.AddSingleton(); - builder.Services.AddScoped(); foreach (var smtp in emailConfig.Smtp) { builder.Services.AddKeyedScoped(smtp.Key.ToLower(), (provider, key) => @@ -210,6 +210,7 @@ "Disable email subscriptions or provide the mail provider for bulk sending"); } } else { + builder.Services.AddSingleton(); builder.Services.AddSingleton, IdentityNoOpEmailSender>(); logMessages.Add("No email provider configured."); } diff --git a/Wave/Services/IEmailService.cs b/Wave/Services/IEmailService.cs index 62381d1..4f823d4 100644 --- a/Wave/Services/IEmailService.cs +++ b/Wave/Services/IEmailService.cs @@ -5,4 +5,12 @@ public interface IEmailService : IAsyncDisposable { ValueTask DisconnectAsync(CancellationToken cancellation); ValueTask SendEmailAsync(IEmail email); +} + +public sealed class NoOpEmailService : IEmailService { + public ValueTask DisposeAsync() => ValueTask.CompletedTask; + + public ValueTask ConnectAsync(CancellationToken cancellation) => ValueTask.CompletedTask; + public ValueTask DisconnectAsync(CancellationToken cancellation) => ValueTask.CompletedTask; + public ValueTask SendEmailAsync(IEmail email) => ValueTask.CompletedTask; } \ No newline at end of file