Fix SMTP auth: settings tab saved wrong config keys
The Settings → E-mailrapport tab (scheduler.js) saved the SMTP username as `user` and TLS flag as `starttls`, but every backend reader expects `username`/`use_tls` (routes/email.py). Result: username was always empty, server.login() was skipped, and the SMTP server rejected the send — surfacing as a misleading "authentication failed" message even with a valid App Password. The bug was latent because Graph is preferred whenever M365 is connected, so the SMTP path was rarely exercised. - scheduler.js: send/load canonical keys (username, use_tls). The send-report modal (scan.js) already used these. - _load_smtp_config(): normalise legacy user→username / starttls→use_tls so configs saved before the fix work without re-entry. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
1 parent
b661a94f98
commit
526e2b0b78
4 files changed
+49
-4
No files matched your search
@@ -252,3 +252,36 @@ class TestFernet:
|
||||
def test_decrypt_empty_returns_empty(self):
|
||||
result = app_config._decrypt_password("")
|
||||
assert result == ""
|
||||
|
||||
|
||||
class TestSmtpConfigLegacyKeys:
|
||||
"""SMTP config saved by the older settings tab used `user`/`starttls`;
|
||||
readers expect `username`/`use_tls`. _load_smtp_config must normalise them."""
|
||||
|
||||
def test_legacy_keys_normalised_on_load(self, tmp_path, monkeypatch):
|
||||
import json
|
||||
p = tmp_path / "smtp.json"
|
||||
p.write_text(json.dumps({
|
||||
"host": "smtp.gmail.com", "port": 587,
|
||||
"user": "netadmin@adm.example.dk", # legacy key
|
||||
"starttls": True, # legacy key
|
||||
"from_addr": "netadmin@adm.example.dk",
|
||||
"recipients": ["a@example.dk"],
|
||||
}), encoding="utf-8")
|
||||
monkeypatch.setattr(app_config, "_SMTP_CONFIG_PATH", p)
|
||||
|
||||
cfg = app_config._load_smtp_config()
|
||||
assert cfg["username"] == "netadmin@adm.example.dk"
|
||||
assert cfg["use_tls"] is True
|
||||
|
||||
def test_canonical_keys_take_precedence(self, tmp_path, monkeypatch):
|
||||
import json
|
||||
p = tmp_path / "smtp.json"
|
||||
p.write_text(json.dumps({
|
||||
"username": "canonical@example.dk",
|
||||
"user": "legacy@example.dk",
|
||||
}), encoding="utf-8")
|
||||
monkeypatch.setattr(app_config, "_SMTP_CONFIG_PATH", p)
|
||||
|
||||
cfg = app_config._load_smtp_config()
|
||||
assert cfg["username"] == "canonical@example.dk"
|
||||
Reference in new issue
Block a user