admin: internes Newsletter-Modul mit Filtern, Protokoll und Abmeldung

Neues Modul unter Admin ▸ Newsletter (nur users:manage): Kampagnen mit
Betreff + leicht formatiertem Text (Purifier-Profil newsletter: fett/
kursiv, Listen, Links) im zentralen Mail-Layout. Empfänger-Filter auf
der User-Datenbank: Portal, Legacy-Vertrag (Bestandsschutz), Login
innerhalb/außerhalb X Monaten, Sortierung nach Login/Erstellung — mit
Live-Zähler und Vorschau im Editor.

Versand friert die Empfängerliste als Protokoll ein (newsletter_
campaign_recipients) und stellt pro Empfänger einen Queue-Job ein;
der Opt-out wird im Worker erneut geprüft. Jede Mail trägt den
signierten One-Click-Abmelde-Link (neuer EmailNotificationType::
Newsletter, bestehende Unsubscribe-Infrastruktur inkl. RFC 8058);
die Abmeldung greift sofort für alle künftigen Auswahlen.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
Kevin Adametz 2026-07-21 09:26:57 +00:00
parent 33e84afa2a
commit f327853541
19 changed files with 1560 additions and 5 deletions

View file

@ -51,6 +51,23 @@ return [
'tel' => true,
],
],
/*
* Interner Newsletter (Admin ▸ Newsletter): leichter Text mit
* fett/kursiv, Listen und Links — passend zur reduzierten
* flux:editor-Toolbar des Kampagnen-Editors. Kein Heading/Bild/
* Blockquote; das Grundgerüst kommt aus dem Mail-Layout.
*/
'newsletter' => [
'HTML.Doctype' => 'HTML 4.01 Transitional',
'HTML.Allowed' => 'p,br,strong,em,b,i,u,ul,ol,li,a[href|title]',
'AutoFormat.AutoParagraph' => true,
'AutoFormat.RemoveEmpty' => true,
'URI.AllowedSchemes' => [
'http' => true,
'https' => true,
'mailto' => true,
],
],
'test' => [
'Attr.EnableID' => 'true',
],