fix: E-Mail-Probleme (Bugs #1-#7) #1
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "investigate/issues"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Zusammenfassung
Untersuchung und Behebung aller gefundenen E-Mail-Probleme im Vergleich mit MeshDD-Bot.
Vollständige Analyse:
docs/investigate/email-issues.mdBehobene Bugs
Bug #1 KRITISCH – SMTP-Einstellungen waren nicht speicherbar
Bisher gab es weder eine API noch ein Formular um SMTP zu konfigurieren.
Konfiguration war nur durch manuelles Editieren der
config.inimöglich.Fix:
GET /api/settings/users– liefert aktuelle[Web_Viewer]SMTP + Auth-Einstellungen (Passwort nur alssmtp_password_set-Flag)POST /api/settings/users– speichert alle Felder inconfig.inisettings_users.html– neue SMTP-Konfigurationskarte mit Sofort-SpeichernBug #2 – Falscher localhost-Fallback
_smtp_config()gab'localhost'zurück wenn kein Host konfiguriert war.Guard
if not smtp['host']griff nicht -> blindes Timeout statt klarer Fehlermeldung.Fix: Fallback von
'localhost'auf''Bug #3 – OTP-Code im E-Mail-Betreff (Sicherheit)
Betreff war
"[Bot] Registrierungscode: 123456"– Push-Notifications und SMTP-Logszeigten den Code ohne E-Mail zu öffnen.
Fix: Betreff neutral, Code nur noch im Body (wie MeshDD-Bot)
Bug #4 – register_resend ignorierte Sendefehler
Rückgabewert von
_send_email()wurde verworfen.Bei SMTP-Fehler wurde trotzdem
resent=1gesetzt.Fix: Rückgabewert wird geprüft, bei Fehler Redirect mit
resend_error=1Bug #5 – Inkonsistente E-Mail-Validierung an 3 Stellen
Drei unterschiedliche Validierungen an drei Stellen im Code.
Fix: Neue statische Methode
_validate_email(address)mitre.match,alle drei Stellen nutzen sie einheitlich.
Bug #6 – Kein E-Mail-Logging
MeshDD-Bot loggt jeden Sendeversuch in eine
email_logs-Tabelle.Fix:
web_email_logs(id, recipient, subject, status, error_message, created_at)_log_email()_send_email()loggtsent/error/skippedBug #7 – MIMEMultipart ohne HTML-Part
_send_email()verwendeteMIMEMultipart('alternative')auch für reine Plaintext-Mails.Fix:
_send_email()nimmt optionalenhtml_body-Parameter;ohne HTML direktes
MIMEText, mit HTML korrektesMIMEMultipart.Geänderte Dateien
modules/web_viewer/app.py– alle Fixesmodules/web_viewer/templates/settings_users.html– SMTP-Formulardocs/investigate/email-issues.md– Analysedokument