Fix account and backup admin settings flows

This commit is contained in:
2026-03-28 15:30:07 +01:00
parent 5f14490ead
commit 4103f84f85
12 changed files with 446 additions and 37 deletions
+14 -18
View File
@@ -10,34 +10,31 @@ public interface IAppEmailSender
public sealed class SmtpEmailSender : IAppEmailSender
{
private readonly IConfiguration _cfg;
private readonly IEmailSettingsResolver _settings;
private readonly ILogger<SmtpEmailSender> _logger;
public SmtpEmailSender(IConfiguration cfg, ILogger<SmtpEmailSender> logger)
public SmtpEmailSender(IEmailSettingsResolver settings, ILogger<SmtpEmailSender> logger)
{
_cfg = cfg;
_settings = settings;
_logger = logger;
}
public async Task SendAsync(string toEmail, string subject, string bodyText, CancellationToken cancellationToken = default)
{
var host = (_cfg["Email:SmtpHost"] ?? "").Trim();
var user = (_cfg["Email:SmtpUser"] ?? "").Trim();
var pass = (_cfg["Email:SmtpPassword"] ?? "").Trim();
var from = (_cfg["Email:From"] ?? user).Trim();
var fromName = (_cfg["Email:FromName"] ?? "Jobbjakt").Trim();
var snapshot = await _settings.GetSnapshotAsync(cancellationToken);
var host = snapshot.Host;
var user = snapshot.User;
var pass = snapshot.Password;
var from = snapshot.From;
var fromName = snapshot.FromName;
var port = snapshot.Port;
var enableSsl = snapshot.EnableSsl;
var timeoutMs = snapshot.TimeoutMs;
var port = _cfg.GetValue("Email:SmtpPort", 587);
if (port <= 0) port = 587;
var enableSsl = _cfg.GetValue("Email:SmtpEnableSsl", true);
var timeoutMs = _cfg.GetValue("Email:SmtpTimeoutMs", 15000);
if (timeoutMs <= 0) timeoutMs = 15000;
var enabled = _cfg.GetValue("Email:Enabled", false);
var enabled = snapshot.Enabled;
if (!enabled)
{
_logger.LogWarning("Email sending is disabled (Email:Enabled=false). Suppressed email to {To} subject={Subject}", toEmail, subject);
_logger.LogWarning("Email sending is disabled. Suppressed email to {To} subject={Subject}", toEmail, subject);
return;
}
@@ -63,7 +60,6 @@ public sealed class SmtpEmailSender : IAppEmailSender
smtp.Credentials = new NetworkCredential(user, pass);
}
// SmtpClient has no CancellationToken support; run on thread pool.
await Task.Run(() => smtp.Send(msg), cancellationToken);
}
}