Search by

schachbulle / contao-mailinglisten-bundle

Samson1964

Betreibt beliebig viele Mailinglisten in Contao. Jede Liste hat ein eigenes Postfach; ein Cronjob holt neue E-Mails per IMAP ab und verteilt sie an die Teilnehmer. Nachrichten fremder Absender werden abgewiesen, die Aufnahme in die Liste lässt sich per Betreffkennung beantragen.

Package info

github.com/Samson1964/contao-mailinglisten-bundle

Type:contao-bundle

pkg:composer/schachbulle/contao-mailinglisten-bundle

Statistics

Installs: 25

Dependents: 0

Suggesters: 0

Stars: 0

Open Issues: 0

1.3.0 2026-09-09 18:56 UTC

This package is auto-updated.

Last update: 2026-09-09 18:59:11 UTC


README

Betreibt beliebig viele E-Mail-Verteiler in Contao. Jede Mailingliste hat ein eigenes Postfach; ein Cronjob holt dort neue Nachrichten per IMAP ab und gibt sie an die Teilnehmer weiter. Nachrichten von Absendern, die nicht zur Liste gehören, werden abgewiesen — mit einem Kennwort im Betreff lässt sich die Aufnahme beantragen.

Läuft unter Contao 4.13 LTS und Contao 5.

Was das Bundle tut

  • Beliebig viele Listen. Jede mit eigener Adresse, eigenem Postfach und eigenem Versandweg.
  • Verteilung nur für Berechtigte. Wer nicht als aktiver Teilnehmer eingetragen ist, kommt nicht durch. Senden und Empfangen sind getrennte Rechte: Ein Teilnehmer kann nur mitlesen, ein anderer nur einreichen.
  • Aufnahme per E-Mail. Beginnt der Betreff mit dem eingestellten Kennwort (Voreinstellung „Anmeldung"), wird der Absender mit dem Status „beantragt" vorgemerkt, bekommt eine Bestätigung, und die Betreuung wird benachrichtigt. Freigegeben wird im Backend.
  • Abmeldung per E-Mail. Mit dem Gegenstück (Voreinstellung „Abmeldung") trägt sich ein Teilnehmer selbst aus.
  • Verlauf. Jede eingegangene Nachricht hinterlässt einen Eintrag: verteilt, abgelehnt, Antrag, Abmeldung, verworfen oder Fehler — jeweils mit Begründung.
  • Schleifenschutz. Abwesenheitsnotizen, Unzustellbarkeitsberichte und Nachrichten, die die Liste selbst versendet hat, werden erkannt und stillschweigend verworfen.
  • Kennwörter verschlüsselt. Die Postfach-Kennwörter liegen mit libsodium verschlüsselt in der Datenbank und erscheinen nie im Backend-Formular.

Installation

Über den Contao Manager oder per Composer:

composer require schachbulle/contao-mailinglisten-bundle

Anschließend die Datenbank aktualisieren (Contao Manager → Systemwartung → Datenbank aktualisieren, oder vendor/bin/contao-console contao:migrate).

Voraussetzungen: PHP 8.1 oder neuer mit den Erweiterungen sodium und json. Die PHP-Erweiterung imap wird nicht gebraucht — der IMAP-Zugriff läuft über die Bibliothek webklex/php-imap, die Composer mitinstalliert.

Schnellstart

  1. Im Backend unter Inhalte → Mailinglisten eine Liste anlegen: Name, Adresse und die Zugangsdaten des Postfachs.
  2. Prüfen, ob das Postfach erreichbar ist:
vendor/bin/contao-console contao:mailingliste:abrufen --pruefen
  1. Über die Operation Teilnehmer die ersten Adressen eintragen.
  2. Die Liste aktivieren.
  3. Sicherstellen, dass Contaos Cron tatsächlich läuft — siehe unten.

Der Cronjob

Das Bundle hängt sich mit dem Intervall minutely in Contaos Cron ein. Wie oft eine einzelne Liste wirklich abgefragt wird, bestimmt deren Feld Prüfintervall (Voreinstellung: 5 Minuten).

Wichtig: In der Voreinstellung stößt Contao seinen Cron über Seitenaufrufe von Besuchern an. Auf einer wenig besuchten Seite bedeutet das, dass Nachrichten stundenlang liegen bleiben. Für eine Mailingliste gehört deshalb ein echter Cronjob eingerichtet:

* * * * * /usr/bin/php /pfad/zum/projekt/vendor/bin/contao-console contao:cron

Von Hand lässt sich der Abruf jederzeit anstoßen:

vendor/bin/contao-console contao:mailingliste:abrufen        # alle aktiven Listen
vendor/bin/contao-console contao:mailingliste:abrufen 3      # nur Liste mit ID 3
vendor/bin/contao-console contao:mailingliste:abrufen 3 --pruefen

--pruefen verbindet sich nur und zählt die ungelesenen Nachrichten. Es wird nichts verteilt, nichts markiert und nichts gelöscht — der Aufruf lässt sich gefahrlos wiederholen.

Ausführliche Dokumentation

Lizenz

LGPL-3.0-or-later. Siehe LICENSE.