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¶
- Ein Formular-Hook (oder ein REST-Service, Job …) ruft
mail.send(...)auf. - 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.
- Ein Worker prüft alle ~15 Sekunden, ob fällige Mails warten, und versendet sie über den konfigurierten SMTP-Server.
- Je nach Ergebnis:
- Erfolg → Status gesendet.
- Server kurz nicht erreichbar → Status bleibt wartend, nächster Versuch nach steigender Wartezeit (30 s, 1 min, 2 min … höchstens 2 Stunden).
- 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-daysTagen (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.