Zum Inhalt

E-Mail-Ausgang

KCForms verschickt E-Mails nicht direkt: Jede Mail wird zuerst in einer Warteschlange (Outbox) gespeichert und von einem Hintergrunddienst versendet. Ein Ausfall des Mailservers verzögert die Zustellung, verliert aber keine Nachricht.

System-Administration → Schnittstellen & Verteilung → E-Mail-Ausgang macht diese Warteschlange sichtbar und steuerbar. Wie Skripte Mails verschicken, steht unter mail.

So funktioniert es

  1. Ein Formular-Hook (oder ein REST-Service, Job …) ruft mail.send(...) auf.
  2. KCForms baut die vollständige MIME-Nachricht inklusive Anhänge und legt sie mit Status wartend in der Outbox ab. Der aufrufende Vorgang läuft sofort weiter.
  3. Ein Worker prüft alle ~15 Sekunden, ob fällige Mails warten, und versendet sie über den konfigurierten SMTP-Server.
  4. Je nach Ergebnis:
  5. Erfolg → Status gesendet.
  6. Server kurz nicht erreichbar → Status bleibt wartend, nächster Versuch nach steigender Wartezeit (30 s, 1 min, 2 min … höchstens 2 Stunden).
  7. Endgültige Ablehnung (z. B. Adresse ungültig, Authentifizierung falsch) oder maximale Versuchszahl erreicht → Status gescheitert Die Mail bleibt zur Ansicht und Diagnose erhalten.

Status-Übersicht

Status Bedeutung
Wartet In der Warteschlange, wartet auf den nächsten Versand-Lauf.
In Zustellung Wird gerade vom Worker verschickt.
Gesendet Erfolgreich an den SMTP-Server übergeben.
Gescheitert Endgültig abgelehnt oder max. Versuche erreicht — manueller Eingriff möglich.
Abgebrochen Manuell gestoppt, wird nicht mehr versendet.

Über die Filter oben (Alle, Wartend, Gescheitert, In Zustellung, Gesendet, Abgebrochen — jeweils mit Anzahl) grenzt du die Liste ein.

Aktionen

  • Aktualisieren — die Liste neu laden; zusätzlich aktualisiert sie sich alle 8 Sekunden selbst.
  • Ausstehende jetzt senden — den Versand sofort anstoßen, statt auf den nächsten Lauf zu warten.
  • Eine Mail in der Liste anklicken öffnet rechts die Details: Empfänger, Betreff, Versuche (z. B. 2 / 8), nächster Versuch, Erstellt/Gesendet, das Formular, der letzte Fehler, eine Vorschau des Textes und das Versand-Logbuch mit jedem einzelnen Versuch.
  • Jetzt erneut senden (in den Details) — eine gescheiterte oder abgebrochene Mail wieder einreihen, mit neuem Versuchsbudget.
  • Abbrechen (in den Details) — eine noch nicht versendete Mail stoppen.

Aufbewahrung

  • Versendete Mails werden nach kcforms.mail.spool.purge-days Tagen (Standard 30) aus der Warteschlange gelöscht.
  • Das Versand-Logbuch bleibt länger: Die Dauer stellst du oben auf der Seite unter Logbuch-Aufbewahrung ein (Standard 60 Tage) und speicherst sie mit Speichern.

Konfiguration

Über application.yml bzw. Umgebungsvariablen:

Schlüssel Default Zweck
kcforms.mail.spool.enabled true Spooling an/aus. false = wieder Direktversand.
kcforms.mail.spool.interval-ms 15000 Prüf-Intervall des Workers (ms).
kcforms.mail.spool.batch-size 20 Max. Mails pro Lauf.
kcforms.mail.spool.max-attempts 8 Versuche bis „gescheitert".
kcforms.mail.spool.purge-days 30 Versendete Mails nach so vielen Tagen löschen (0 = nie).

Verbindungstest sendet direkt

Die Testmail in der E-Mail-Konfiguration umgeht die Warteschlange bewusst und sendet sofort — so fällt ein Konfigurationsfehler gleich auf.