PHPackages                             vtinnovations/centralized-notification-suite - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Mail &amp; Notifications](/categories/mail)
4. /
5. vtinnovations/centralized-notification-suite

ActiveContao-bundle[Mail &amp; Notifications](/categories/mail)

vtinnovations/centralized-notification-suite
============================================

Zentrale Benachrichtigungsverwaltung für Contao 5: Formular-, Mitglieder- und Webhook-Nachrichten mit Tokens, Layouts und Versandprotokoll.

v1.0.0(today)01↑2900%proprietaryPHPPHP ^8.1

Since Aug 28Pushed todayCompare

[ Source](https://github.com/vtinnovations/centralized-notification-suite)[ Packagist](https://packagist.org/packages/vtinnovations/centralized-notification-suite)[ RSS](/packages/vtinnovations-centralized-notification-suite/feed)WikiDiscussions main Synced today

READMEChangelog (1)Dependencies (7)Versions (2)Used By (0)

Centralized Notification Suite für Contao 5
===========================================

[](#centralized-notification-suite-für-contao-5)

*[English version](README.en.md)*

Transaktions-Benachrichtigungen für Contao 5.3 LTS und 5.7+: Formular-, Mitglieder-, Kommentar- und Newsletter-Mails sowie Slack- oder Webhook-Meldungen – im Backend konfiguriert und über einen einzigen Service-Aufruf ausgelöst.

Inhalt
------

[](#inhalt)

- [Projektübersicht](#projekt%C3%BCbersicht)
- [Status](#status)
- [Unterstützte Versionen](#unterst%C3%BCtzte-versionen)
- [Systemvoraussetzungen](#systemvoraussetzungen)
- [Installation](#installation)
- [Lizenzierung](#lizenzierung)
- [Backend-Module](#backend-module)
- [Erste Schritte](#erste-schritte)
- [Tokens](#tokens)
- [Nachrichteninhalt](#nachrichteninhalt)
- [E-Mail-Layouts und Branding](#e-mail-layouts-und-branding)
- [Absender (Gateways)](#absender-gateways)
- [Versandprotokoll](#versandprotokoll)
- [Auslösen aus eigenem Code](#ausl%C3%B6sen-aus-eigenem-code)
- [Berechtigungen](#berechtigungen)
- [Funktionsstatus](#funktionsstatus)
- [Sicherheitsmodell](#sicherheitsmodell)
- [Betriebssicherheit](#betriebssicherheit)
- [Laufzeitverzeichnisse](#laufzeitverzeichnisse)
- [Externe Kommunikation](#externe-kommunikation)
- [Protokollierung](#protokollierung)
- [Deployment](#deployment)
- [Cache leeren](#cache-leeren)
- [Tests](#tests)
- [Fehlerbehebung](#fehlerbehebung)
- [Bekannte Einschränkungen](#bekannte-einschr%C3%A4nkungen)
- [Lizenz und Urheberrecht](#lizenz-und-urheberrecht)

Projektübersicht
----------------

[](#projektübersicht)

Die Centralized Notification Suite bündelt den gesamten Benachrichtigungsversand einer Contao-Installation an einer Stelle. Eine *Benachrichtigung* beschreibt einen Anlass, ihre *Nachrichten* beschreiben die konkreten Aussendungen je Sprache, und ein *Absender* beschreibt den Weg, über den ausgeliefert wird.

Gegenüber vergleichbaren Lösungen bietet die Suite vier Dinge zusätzlich:

Centralized Notification SuiteÜbliche Alternativen**Ist die Nachricht angekommen?**Versandprotokoll mit echtem Zustellstatus, Fehlertext und erneutem Versand per KlickBlick in `var/logs/`**Test einer Benachrichtigung**Vorschau und Testversand mit eigenen Token-WertenDas echte Ereignis auslösen**Eingefügte HTML-Designs**CSS wird automatisch in `style`-Attribute überführt, damit Outlook und Gmail korrekt darstellenManuelles Inlining**Gemeinsames Branding**Wiederverwendbare Layouts mit Platzhalter für den NachrichteninhaltKopf und Fuß in jede Nachricht kopierenErgänzend: automatische Text-Alternative, eingebettete Bilder, CC/BCC/Antwort-an je Nachricht, automatische Wiederholung fehlgeschlagener Sendungen, eine typbezogene Token-Referenz im Backend sowie ein Importbefehl für bestehende Notification-Center-Installationen.

Status
------

[](#status)

Produktiv einsetzbar. Alle in diesem Dokument beschriebenen Funktionen sind implementiert und durch die mitgelieferte Testsuite abgedeckt. Die Suite setzt eine aktivierte Lizenz voraus; Einzelheiten siehe [Lizenzierung](#lizenzierung).

Unterstützte Versionen
----------------------

[](#unterstützte-versionen)

KomponenteUnterstütztContao5.3 LTS bis 5.7PHP8.1 oder neuerSymfony Mailer / Mime6.4 oder 7.x (von Contao mitgebracht)Auf Contao 5.3 bis 5.6 werden die Vorschaukarten der Inhaltsblöcke über eine ältere Contao-Schnittstelle erzeugt, weil diese Kerne noch keine Datensatz-Beschriftung für Eltern-Ansichten kennen. Darstellung, Sortierung per Drag-and-drop und alle übrigen Funktionen verhalten sich identisch; die passende Schnittstelle wird anhand der laufenden Contao-Version selbst gewählt.

Systemvoraussetzungen
---------------------

[](#systemvoraussetzungen)

- PHP 8.1 oder neuer mit den Erweiterungen `curl`, `json` und `sodium`
- Contao 5.3 oder neuer mit funktionsfähiger Datenbank
- Ein erreichbarer Mailversand (SMTP oder ein anderer von Symfony Mailer unterstützter Transport)
- Ausgehende HTTPS-Verbindungen für Lizenzvorgänge und für Webhook-Absender
- Schreibrechte im Verzeichnis `var/` der Installation

Installation
------------

[](#installation)

```
composer require vtinnovations/centralized-notification-suite
vendor/bin/contao-console contao:migrate
```

Optional lassen sich fertige Layouts und Beispiel-E-Mails einspielen:

```
vendor/bin/contao-console notification:install-layouts
vendor/bin/contao-console notification:install-emails
```

Anschließend im Backend die Lizenz aktivieren (siehe unten). Ohne gültige Lizenz versendet die Suite nichts.

### Dateisystemberechtigungen

[](#dateisystemberechtigungen)

Der Webserver-Benutzer benötigt Schreibrechte auf `var/`. Die Suite legt dort ihre privaten Daten sowie – bei Verwendung des Datei-Absenders – abgelegte Nachrichten ab. Diese Verzeichnisse liegen außerhalb des öffentlichen Web-Wurzelverzeichnisses und dürfen nicht über den Webserver ausgeliefert werden.

Lizenzierung
------------

[](#lizenzierung)

Die Suite wird als kostenfreies Produkt mit unbefristeter Lizenz ausgeliefert. „Kostenfrei“ bezieht sich ausschließlich auf den Preis: Eine von V-T.ONE ausgestellte Lizenz muss aktiviert sein, bevor Nachrichten versendet werden.

### Verwaltung

[](#verwaltung)

Die Lizenzverwaltung befindet sich unter **Contao → Einstellungen** im Abschnitt **Centralized Notification Suite Licence management**. Dort stehen zur Verfügung:

- **Lizenzschlüssel eintragen und speichern** – aktiviert die Installation.
- **Lizenz aktualisieren** – gleicht den gespeicherten Stand mit dem Lizenzdienst ab.
- **Lizenz entfernen** – setzt die Installation sofort in den nicht lizenzierten Zustand zurück.

Angezeigt werden Status, Paket, lizenzierter Host, abgedeckte Hosts, Version und Laufzeit. Der Schlüssel selbst wird nach dem Speichern nicht erneut in der Oberfläche ausgegeben.

### Zustände

[](#zustände)

ZustandWirkungKeine Lizenz aktiviertEs wird nichts versendet; Contao verhält sich wie ohne das PaketAktive unbefristete LizenzVoller FunktionsumfangLizenz nicht prüfbar oder für diese Website nicht gültigWie „keine Lizenz“; vorhandene Inhalte bleiben unverändertEine Lizenz gilt für die Hostnamen, für die sie ausgestellt wurde. Maßgeblich sind die Domains, die auf den Startseiten der Website hinterlegt sind. Unterschiedliche Hostnamen sind verschiedene Identitäten – `example.com` und `www.example.com` gelten nicht automatisch füreinander.

Fällt die Lizenzprüfung negativ aus, werden ausschließlich Versandfunktionen deaktiviert. Benachrichtigungen, Nachrichten, Layouts, Branding und Versandprotokoll bleiben vollständig erhalten.

Backend-Module
--------------

[](#backend-module)

Die Suite ergänzt die Backend-Navigation um die Gruppe **Centralized Notification Suite** mit sechs Modulen in dieser Reihenfolge:

ModulZweck**Benachrichtigungen**Benachrichtigungen und ihre Nachrichten verwalten**E-Mail-Layouts**Wiederverwendbare HTML-Layouts für Ihre Nachrichten verwalten**Branding**Logo, Markenfarbe und Firmenangaben für alle Designs**Absender**Die Absender (Gateways) verwalten, die Nachrichten versenden**Versandprotokoll**Sehen, was versendet wurde, warum etwas fehlgeschlagen ist, und erneut senden**SMTP-Konfiguration**SMTP-Zugangsdaten, über die die Website versendetErste Schritte
--------------

[](#erste-schritte)

1. **Absender** → einen Eintrag vom Typ *E-Mail* anlegen und die Absenderadresse eintragen.
2. **Benachrichtigungen** → einen Eintrag anlegen. Der gewählte Typ bestimmt, welche Tokens angeboten werden und an welchen Stellen die Benachrichtigung zur Auswahl steht. Der Alias wird aus dem Titel erzeugt.
3. Die Nachrichten der Benachrichtigung öffnen, eine Nachricht anlegen, Absender und Sprache wählen, Betreff und Inhalt erfassen.
4. Über **Vorschau** das fertige Ergebnis ansehen oder über **Testversand** eine Probe an die eigene Adresse schicken.
5. Verknüpfen: über das Feld *Benachrichtigungen* eines Formulars, das gleichnamige Feld eines Mitgliedermoduls oder aus eigenem Code.

Tokens
------

[](#tokens)

`##token##` steht in Betreff, Inhalt und Adressfeldern zur Verfügung. Contao-Insert-Tags (`{{env::url}}`, `{{link_url::42}}`) funktionieren ebenfalls, ebenso `{if}` / `{else}` / `{endif}`.

Die **Hilfe-Schaltfläche** an den Inhaltsfeldern listet alle Tokens auf, die für den Typ der jeweiligen Benachrichtigung zur Verfügung stehen. Überall verfügbar:

`##admin_email##` `##date##` `##time##` `##datim##` `##host##` `##url##` `##page_id##``##page_title##` `##page_url##`

Formular-Benachrichtigungen erhalten zusätzlich jedes übermittelte Feld unter seinem Namen sowie:

TokenInhalt`##all_fields##`Alle Felder als `Bezeichnung: Wert``##all_fields_filled##`Dasselbe ohne leere Felder`##all_fields_html##`Alle Felder als formatierte Tabelle`##all_fields_filled_html##`Dieselbe Tabelle ohne leere Felder`##uploads##` / `##uploads_html##`Namen hochgeladener Dateien`##label_##`Die Bezeichnung eines FeldesMitglieder-, Kommentar- und Newsletter-Benachrichtigungen erhalten entsprechend `##member_*##`, `##comment_*##` und `##newsletter_*##`.

### Maskierung

[](#maskierung)

In einem **HTML**-Inhalt werden Token-Werte maskiert und Zeilenumbrüche in `` überführt. Eingaben aus Formularen können damit weder Markup einschleusen noch das Layout zerstören. Tokens, deren Name auf `_html` endet, werden bewusst als Markup eingesetzt – so arbeitet `##all_fields_html##`. Im Textinhalt wird nicht maskiert.

Nachrichteninhalt
-----------------

[](#nachrichteninhalt)

Der Inhalt einer Nachricht ist entweder in **Blöcken** aufgebaut oder **eigenes HTML**; die Einstellung *Inhalt* an der Nachricht entscheidet. Bestehende Nachrichten bleiben unverändert auf eigenem HTML.

Im Blockmodus erhält die Nachricht eine untergeordnete Liste **Blöcke**. Blöcke lassen sich per Drag-and-drop sortieren und zeigen jeweils eine Vorschaukarte. Verfügbare Blocktypen:

TypGruppeÜberschrift, Absatz, Liste, Tabelle, TokenTextBild, TeaserMedienSchaltflächeAktionTrennerLayoutEigenes HTMLErweitert### Fertige E-Mails

[](#fertige-e-mails)

`notification:install-emails` legt drei vollständig aufgebaute Beispiel-E-Mails an (Transaktion, Newsletter, Ankündigung), die als Ausgangspunkt bearbeitet werden können.

E-Mail-Layouts und Branding
---------------------------

[](#e-mail-layouts-und-branding)

Ein Layout ist der gestaltete Rahmen, den sich mehrere Nachrichten teilen. Drei Betriebsarten:

- **Design** – eines von 20 mitgelieferten Designs, das Logo, Markenfarbe und Firmenangaben aus dem Modul **Branding** übernimmt.
- **Kopf und Fuß** um den Inhalt herum.
- **Vollständiges HTML-Dokument** mit einem Platzhalter für den Inhalt.

Das CSS eines Layouts wird vor dem Versand in `style`-Attribute überführt. Genau das lässt ein eingefügtes Design in Outlook und Gmail korrekt aussehen. `@media`-Regeln lassen sich nicht inline setzen und bleiben als ``-Block erhalten, damit responsive Regeln weiter wirken.

Je Nachricht zusätzlich einstellbar:

- **Textfassung aus dem HTML erzeugen** – Links werden zu `Bezeichnung (URL)`. Geschieht automatisch, wenn das Textfeld leer ist.
- **Bilder einbetten** – auf dieser Website liegende Bilder werden als Anhang eingebettet und ohne Nachladen externer Inhalte dargestellt.

Absender (Gateways)
-------------------

[](#absender-gateways)

- **E-Mail** – über Symfony Mailer, optional über einen benannten Transport.
- **Webhook / JSON** – ein beliebiger HTTPS-Endpunkt. Ohne eigenen Payload wird ein einfaches Textformat gesendet, das Slack, Mattermost und Discord annehmen. Für Microsoft Teams, Google Chat und andere Dienste steht ein Hilfe-Assistent mit fertigen Vorlagen bereit. Token-Werte werden JSON-sicher eingesetzt.
- **Datei** – schreibt die Nachricht nach `var/notification-mail`, statt sie zu versenden. Damit lassen sich Benachrichtigungen ohne Mailserver und ohne Risiko für echte Empfänger prüfen.

Eigene Absender lassen sich ergänzen, indem `GatewayInterface` implementiert oder `AbstractGateway` erweitert wird. Die Backend-Felder deklariert der Absender selbst; `contao:migrate` legt die zugehörigen Spalten an.

Versandprotokoll
----------------

[](#versandprotokoll)

Jeder Versuch wird festgehalten: Empfänger, gerenderter Betreff, beide Inhaltsfassungen, Status und Fehler.

Der Status ist wörtlich zu verstehen. Bei E-Mail bedeutet **In Warteschlange**, dass die Nachricht an die Messenger-Warteschlange von Contao übergeben wurde; erst wenn ein Worker tatsächlich mit dem Mailserver gesprochen hat, wird daraus **Versendet** oder **Fehlgeschlagen**.

Fehlgeschlagene Einträge lassen sich erneut senden und werden einmal pro Stunde automatisch wiederholt.

```
# config/config.yaml
centralized_notification_suite:
    log:
        enabled: true
        store_body: true        # nötig für erneuten Versand; ausschalten, um keine personenbezogenen Daten zu speichern
        retention_days: 90      # 0 behält Einträge dauerhaft
        max_attempts: 3
        retry_failed: true
```

Auslösen aus eigenem Code
-------------------------

[](#auslösen-aus-eigenem-code)

```
use VTInnovations\CentralizedNotificationSuite\CentralizedNotificationSuite;

public function __construct(private readonly CentralizedNotificationSuite $notify) {}

$result = $this->notify->send('bestellbestaetigung', [
    'kunde_name'  => $order->name,
    'summe'       => $order->formattedTotal,
], 'de');

$result->isSuccessful();
$result->hasFailures();
$result->getErrors();
```

**Zustellfehler lösen keine Ausnahme aus.** Eine Benachrichtigung wird in der Regel ausgelöst, nachdem etwas bereits gespeichert wurde. Würde ein SMTP-Zeitüberschreitungsfehler durchgereicht, sähe der Besucher eine Fehlermeldung für einen erfolgreichen Vorgang. Fehler werden je Nachricht abgefangen und protokolliert; die übrigen Nachrichten werden weiterhin versendet. Ein unbekannter Alias löst hingegen eine Ausnahme aus, weil das ein Programmierfehler ist.

Auf der Kommandozeile:

```
vendor/bin/contao-console notification:send bestellbestaetigung -t kunde_name=Jane --dry-run
```

Über die Ereignisse `PreSendEvent` und `PostSendEvent` lässt sich der Versand abbrechen, verändern oder auswerten.

### Migration aus Notification Center

[](#migration-aus-notification-center)

```
vendor/bin/contao-console notification:import-nc --dry-run
vendor/bin/contao-console notification:import-nc
```

Liest die bestehenden Tabellen und legt Benachrichtigungen, Nachrichten und Absender neu an. Die vorhandene Installation bleibt unangetastet, beide können parallel laufen. Tokennamen werden übersetzt; alles Unbekannte bleibt erhalten und wird am Ende aufgeführt – daher stets zuerst mit `--dry-run` starten.

Berechtigungen
--------------

[](#berechtigungen)

- Die sechs Backend-Module folgen der normalen Contao-Rechteverwaltung und lassen sich je Benutzergruppe freigeben.
- Die Lizenzverwaltung liegt in **Einstellungen** und steht damit nur Benutzern zur Verfügung, die auf dieses Modul zugreifen dürfen. Jede lizenzverändernde Aktion prüft diese Berechtigung zusätzlich serverseitig.
- Vorschau und Testversand sind an das jeweilige Backend-Modul gebunden.

Funktionsstatus
---------------

[](#funktionsstatus)

FunktionStatusBenachrichtigungen, Nachrichten, MehrsprachigkeitVerfügbarFormular-, Mitglieder-, Kommentar- und Newsletter-AuslöserVerfügbarAuslösen aus eigenem Code und per KommandozeileVerfügbarTokens inklusive Formularfeldern und Hilfe-AssistentVerfügbarBlockbasierter NachrichteninhaltVerfügbar20 Designs, Branding, eigene LayoutsVerfügbarCSS-Inlining und eingebettete BilderVerfügbarAutomatische TextfassungVerfügbarAnhänge aus Formularuploads und aus der DateiverwaltungVerfügbarVorschau und TestversandVerfügbarVersandprotokoll, erneuter Versand, automatische WiederholungVerfügbarAbsender E-Mail, Webhook/JSON, DateiVerfügbarSMTP-Konfiguration im BackendVerfügbarImport aus Notification CenterVerfügbarVersand ohne aktivierte LizenzNicht verfügbarFrontend-Ausgabe durch das PaketNicht zutreffendSicherheitsmodell
-----------------

[](#sicherheitsmodell)

- **Zugriffskontrolle** – alle Backend-Module unterliegen der Rechteverwaltung von Contao. Lizenzverändernde Aktionen prüfen die Berechtigung zusätzlich serverseitig und laufen über Contao-eigene Formulare, sodass der Anfrage-Token greift.
- **Serverseitige Durchsetzung** – die Berechtigung wird an mehreren voneinander unabhängigen Stellen im Versandweg geprüft, nicht allein in der Oberfläche.
- **Maskierung** – Token-Werte werden im HTML-Inhalt maskiert. Der Ausnahmefall ist ausdrücklich über die Namenskonvention `_html` gekennzeichnet.
- **Authentizität und Integrität** – Lizenzdaten werden authentifiziert und gegen Veränderung geprüft, bevor sie verwendet werden. Eine nachträglich veränderte Datei wird abgelehnt.
- **Private Ablage** – Lizenzdaten liegen außerhalb des öffentlichen Web-Wurzelverzeichnisses mit restriktiven Dateirechten.
- **Vertrauenswürdige Verbindungen** – ausgehende Lizenzkommunikation erfolgt ausschließlich per HTTPS an einen fest im Programmcode hinterlegten Dienst, mit Zertifikatsprüfung und ohne Weiterleitungen.
- **Sicheres Scheitern** – schlägt eine Prüfung fehl, wird die geschützte Funktion deaktiviert. Es gibt keinen Ersatzpfad, der bei einem Fehler zusätzliche Rechte gewährt.
- **Geheimnisse** – vollständige Schlüssel und Authentifizierungsdaten erscheinen weder in Browser-Ausgaben noch in gewöhnlichen Protokollen. Dies wird automatisiert getestet.

Diese Angaben beschreiben umgesetzte Kontrollen. Kein Schutzmechanismus ist unüberwindbar; die Suite erhebt diesen Anspruch nicht.

Betriebssicherheit
------------------

[](#betriebssicherheit)

- **Zugesichert:** Ein Ausfall des Lizenzdienstes entzieht einer bereits aktivierten Installation nicht die Lizenz. Ein fehlgeschlagener Schreibvorgang lässt den vorherigen Stand unverändert. Ein Zustand, der nur zur Hälfte geschrieben wurde, wird nicht verwendet.
- **Zugesichert:** Zustellfehler werden je Nachricht abgefangen; die übrigen Nachrichten werden weiterhin versendet.
- **Umgebungsabhängig:** Ob eine E-Mail tatsächlich zugestellt wird, hängt vom Mailserver und vom Betrieb der Messenger-Warteschlange ab. Ohne laufenden Worker verbleiben Nachrichten in der Warteschlange.
- **Nach bestem Bemühen:** Die stündliche Wiederholung versucht fehlgeschlagene Nachrichten erneut, bis die eingestellte Anzahl an Versuchen erreicht ist.

Laufzeitverzeichnisse
---------------------

[](#laufzeitverzeichnisse)

VerzeichnisInhalt`var/`Private Daten der Suite, darunter der Lizenzzustand`var/notification-mail`Vom Datei-Absender abgelegte NachrichtenBeide liegen außerhalb des öffentlichen Web-Wurzelverzeichnisses und gehören in die Sicherung, nicht in die Versionsverwaltung.

Externe Kommunikation
---------------------

[](#externe-kommunikation)

Ohne ausdrückliche Konfiguration nimmt die Suite folgende ausgehende Verbindungen auf:

AnlassZielLizenz aktivieren, aktualisieren, prüfenFest hinterlegter Lizenzdienst von V-T.ONE, ausschließlich per HTTPSNutzungsmeldungDerselbe Dienst; wird nach dem Ausliefern der Antwort gesendet und beeinflusst weder Darstellung noch VersandWebhook-AbsenderAusschließlich die im jeweiligen Absender eingetragene AdresseE-Mail-VersandDer konfigurierte MailserverDie Suite nimmt darüber hinaus eine Anfrage entgegen: Der Lizenzdienst kann einen aktualisierten Lizenzstand an `/rest/api/v1/centralized-notification-suite-license-updater` übermitteln. Der Endpunkt nimmt ausschließlich authentifizierte Anfragen an und muss erreichbar bleiben, damit Aktualisierungen ankommen.

Protokollierung
---------------

[](#protokollierung)

Betriebsmeldungen gehen in das Contao-Systemprotokoll. Festgehalten werden Vorgang, Ergebnis und – beim Versand – die betroffene Nachricht.

Nicht protokolliert werden vollständige Lizenzschlüssel, Authentifizierungsdaten, übertragene Datenpakete sowie deren Prüfwerte. Das Versandprotokoll speichert Betreff und Inhalt nur, wenn `store_body` aktiviert ist; auf Installationen ohne Speicherung personenbezogener Daten sollte diese Option ausgeschaltet werden.

Deployment
----------

[](#deployment)

```
composer install --no-dev --optimize-autoloader
vendor/bin/contao-console contao:migrate --no-interaction
vendor/bin/contao-console cache:clear --env=prod
vendor/bin/contao-console cache:warmup --env=prod
```

Zu beachten:

- `var/` muss für den Webserver-Benutzer beschreibbar sein.
- Die Lizenz ist an Hostnamen gebunden. Test-, Staging- und Produktivsysteme benötigen jeweils eine für ihren Hostnamen gültige Lizenz.
- Ausgehende HTTPS-Verbindungen und der oben genannte Endpunkt dürfen nicht blockiert werden.
- Für den Mailversand muss ein Messenger-Worker laufen oder der Web-Worker von Contao aktiv sein.

Cache leeren
------------

[](#cache-leeren)

```
vendor/bin/contao-console cache:clear --env=prod
vendor/bin/contao-console cache:clear --env=dev
```

Nach Änderungen an der SMTP-Konfiguration im Backend erneuert die Suite den Cache selbstständig.

Tests
-----

[](#tests)

```
composer install
vendor/bin/phpunit
vendor/bin/phpstan analyse
vendor/bin/php-cs-fixer fix --dry-run --diff
composer release:check
```

Die Testsuite läuft ohne Contao-Bootstrap und ohne Netzwerkzugriff. `composer release:check`prüft vor dem Paketieren, ob das ausgelieferte Paket überhaupt in der Lage ist, Lizenzdaten zu prüfen, und bricht andernfalls ab.

Fehlerbehebung
--------------

[](#fehlerbehebung)

BeobachtungUrsache und Abhilfe„Es wurde nichts versendet: Diese Installation ist nicht aktiviert.“Keine gültige Lizenz. Unter Einstellungen aktivieren.Lizenz lässt sich nicht aktivierenPrüfen, ob auf der Startseite eine Domain hinterlegt ist und ob ausgehendes HTTPS möglich ist. Der Schlüssel muss für diesen Hostnamen ausgestellt sein.E-Mails bleiben „In Warteschlange“Es läuft kein Messenger-Worker. Warteschlange abarbeiten oder Worker einrichten.Formular versendet nichtsIm Formular muss die Benachrichtigung ausgewählt sein, die Nachricht veröffentlicht und für die Sprache vorhanden sein.Design wird in Outlook falsch dargestelltPrüfen, ob das Layout veröffentlicht und der Nachricht zugewiesen ist.Webhook meldet einen FehlerDer Fehlertext des Zielsystems steht im Versandprotokoll.Bekannte Einschränkungen
------------------------

[](#bekannte-einschränkungen)

- Der Versand setzt eine aktivierte Lizenz voraus. Ohne Lizenz wird nichts zugestellt.
- Eine Lizenz gilt nur für die Hostnamen, für die sie ausgestellt wurde; verwandte Schreibweisen gelten nicht automatisch mit.
- Die Versionierung erfasst die Nachricht selbst, nicht ihre Inhaltsblöcke. Das Zurückholen einer älteren Nachrichtenversion stellt deren Blöcke nicht wieder her.
- Der Datei-Absender ist für Entwicklung und Prüfung gedacht und stellt nicht zu.
- Für den Webhook-Absender liefert die Suite Vorlagen; das Format des Zielsystems bestimmt der jeweilige Dienst.

Lizenz und Urheberrecht
-----------------------

[](#lizenz-und-urheberrecht)

Softwarelizenz: proprietär (`proprietary`, siehe `composer.json`). Alle Rechte vorbehalten. Weitergabe, Veränderung und Weiterverbreitung sind nur im Rahmen des mit V&amp;T Innovations geschlossenen Vertrags zulässig.

Copyright: V&amp;T Innovations Team, .

Der Betrieb der Suite erfordert zusätzlich eine aktivierte Produktlizenz; siehe [Lizenzierung](#lizenzierung).

Support und Fehlermeldungen: [github.com/vtinnovations/centralized-notification-suite](https://github.com/vtinnovations/centralized-notification-suite/issues)

---

*[English version](README.en.md)*

###  Health Score

39

—

LowBetter than 84% of packages

Maintenance100

Actively maintained with recent releases

Popularity2

Limited adoption so far

Community7

Small or concentrated contributor base

Maturity42

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Unknown

Total

1

Last Release

0d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/f2d45353480544a8ed620a336732acfd53433ed4e1542923b8ac3f6bc965a31d?d=identicon)[vtinnovations](/maintainers/vtinnovations)

![](https://avatars.githubusercontent.com/u/61495120?v=4)[ARIJIT ROY](/maintainers/Arijit118)[@Arijit118](https://github.com/Arijit118)

---

Top Contributors

[![vtinnovations](https://avatars.githubusercontent.com/u/199940474?v=4)](https://github.com/vtinnovations "vtinnovations (2 commits)")

---

Tags

emailnotificationwebhookcontaotransactional emailcontao-bundlenotification\_centersend-log

###  Code Quality

TestsPHPUnit

### Embed Badge

![Health badge](/badges/vtinnovations-centralized-notification-suite/health.svg)

```
[![Health](https://phpackages.com/badges/vtinnovations-centralized-notification-suite/health.svg)](https://phpackages.com/packages/vtinnovations-centralized-notification-suite)
```

###  Alternatives

[laravel/framework

The Laravel Framework.

34.9k556.2M21.6k](/packages/laravel-framework)[pimcore/pimcore

Content &amp; Product Management Framework (CMS/PIM/E-Commerce)

3.8k3.9M536](/packages/pimcore-pimcore)[terminal42/notification_center

Notification Center extension for Contao Open Source CMS

80419.8k113](/packages/terminal42-notification-center)[illuminate/mail

The Illuminate Mail package.

5910.7M596](/packages/illuminate-mail)[drupal/core

Drupal is an open source content management platform powering millions of websites and applications.

19467.3M1.9k](/packages/drupal-core)[prestashop/prestashop

PrestaShop is an Open Source e-commerce platform, committed to providing the best shopping cart experience for both merchants and customers.

9.2k19.7k](/packages/prestashop-prestashop)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
