feat: E-Mail-Benachrichtigungen über SMTP (nur Benachrichtigung, keine Befehle) #18

Closed
opened 2026-09-26 06:08:01 +00:00 by AxonByteDev · 0 comments
Owner

Ziel

Zusätzlich zu Matrix soll PatchPilot Benachrichtigungen per E-Mail über SMTP versenden können.

Wichtig: Es handelt sich um einen reinen Benachrichtigungskanal (nur ausgehend). Anders als bei Matrix (backend/bot.py) sollen über E-Mail keine Befehle empfangen oder ausgeführt werden – kein Postfach-Abruf (IMAP/POP3), keine Auswertung von Antworten.

Anforderungen

Einstellungen (Weboberfläche → Einstellungen)

  • SMTP-Server (Host)
  • Port (Standard 587)
  • Verschlüsselung: STARTTLS / SSL/TLS / keine
  • Benutzername und Passwort (optional, falls der Server ohne Anmeldung versendet)
  • Absenderadresse
  • Empfängeradresse(n) – mehrere, kommagetrennt
  • Kanal aktivieren/deaktivieren
  • Button „Test-E-Mail senden“ (analog zu POST /api/settings/matrix/test)

Versand

  • Versand über smtplib (Standardbibliothek, keine neue Abhängigkeit nötig)
  • Dieselben Ereignisse wie bei Matrix; die bestehenden Ereignis-Schalter (send_if(...)) gelten für alle Kanäle
  • notifications.send() verteilt an alle konfigurierten Kanäle (Matrix und/oder E-Mail); ein fehlschlagender Kanal darf den anderen nicht blockieren
  • Sinnvoller Betreff, z. B. [PatchPilot] <Ereignis>; Nachrichtentext als Klartext
  • Fehler werden geloggt (Warnung), brechen aber keine Updates/Jobs ab
  • Timeout für den SMTP-Verbindungsaufbau

Sicherheit

  • SMTP-Passwort wird wie matrix_password maskiert (_MASKED_KEYS) und nie im Klartext an das Frontend ausgeliefert

Tests

  • Unit-Tests mit gemocktem smtplib (Versand, fehlende Konfiguration → kein Versand, Fehlerfall wird nur geloggt, Maskierung des Passworts)

Nicht Teil dieses Issues

  • Befehle/Steuerung per E-Mail
  • HTML-Mails / Templates
## Ziel Zusätzlich zu Matrix soll PatchPilot Benachrichtigungen **per E-Mail über SMTP** versenden können. Wichtig: Es handelt sich um einen **reinen Benachrichtigungskanal (nur ausgehend)**. Anders als bei Matrix (`backend/bot.py`) sollen über E-Mail **keine Befehle empfangen oder ausgeführt** werden – kein Postfach-Abruf (IMAP/POP3), keine Auswertung von Antworten. ## Anforderungen ### Einstellungen (Weboberfläche → Einstellungen) - SMTP-Server (Host) - Port (Standard 587) - Verschlüsselung: `STARTTLS` / `SSL/TLS` / keine - Benutzername und Passwort (optional, falls der Server ohne Anmeldung versendet) - Absenderadresse - Empfängeradresse(n) – mehrere, kommagetrennt - Kanal aktivieren/deaktivieren - Button **„Test-E-Mail senden“** (analog zu `POST /api/settings/matrix/test`) ### Versand - Versand über `smtplib` (Standardbibliothek, keine neue Abhängigkeit nötig) - Dieselben Ereignisse wie bei Matrix; die bestehenden Ereignis-Schalter (`send_if(...)`) gelten für alle Kanäle - `notifications.send()` verteilt an alle konfigurierten Kanäle (Matrix und/oder E-Mail); ein fehlschlagender Kanal darf den anderen nicht blockieren - Sinnvoller Betreff, z. B. `[PatchPilot] <Ereignis>`; Nachrichtentext als Klartext - Fehler werden geloggt (Warnung), brechen aber keine Updates/Jobs ab - Timeout für den SMTP-Verbindungsaufbau ### Sicherheit - SMTP-Passwort wird wie `matrix_password` maskiert (`_MASKED_KEYS`) und nie im Klartext an das Frontend ausgeliefert ### Tests - Unit-Tests mit gemocktem `smtplib` (Versand, fehlende Konfiguration → kein Versand, Fehlerfall wird nur geloggt, Maskierung des Passworts) ## Nicht Teil dieses Issues - Befehle/Steuerung per E-Mail - HTML-Mails / Templates
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
AxonByteDev/PatchPilot#18
No description provided.