newsletter: Unzustellbare Adressen aus beiden Empfängerlisten nehmen
newsletter:import-bounces liest eine Bounce-Liste und nimmt die betroffenen Adressen aus jeder künftigen Mailstrecke. Wiederholte Zustellversuche an tote Adressen kosten den Absenderruf — bei All-Inkl in Form von 554-Spam-Pattern-Ablehnungen — und der trifft zuerst die Magic Links, also genau den Weg, über den Newsrooms künftig beansprucht werden sollen. Es gibt zwei getrennte Empfängerlisten, und eine tote Adresse muss aus beiden verschwinden: `users` als Grundmenge der internen Kampagnen und `newsletter_subscriptions` als öffentliche Anmeldung auf den Portalen. Die zweite hängt nicht am Konto — die meisten Einträge dort haben gar keinen User und wären sonst gar nicht erreicht worden. Sie bekommt unsubscribed_at und läuft durch den NewsletterSyncService, damit die Abmeldung auch beim externen Versender ankommt. Als "ohne User-Konto" gilt eine Adresse erst, wenn sie in keiner der beiden Listen steht. Verglichen wird ohne Rücksicht auf Groß- und Kleinschreibung: Bounce-Listen kommen aus dem Mailserver-Log und geben die Adresse so wieder, wie der Absender sie geschrieben hat. Die Rückläufer-Datei selbst bleibt lokal — sie enthält echte Adressen und gehört wie die Alt-API-Logs nicht ins Repository. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
parent
982de2aba2
commit
e634af0330
3 changed files with 396 additions and 0 deletions
3
.gitignore
vendored
3
.gitignore
vendored
|
|
@ -63,5 +63,8 @@ dev/archive/migration-2026/sql/
|
|||
# Produktivdaten: API-Aktivitaets-Logs der Altportale (Kundendaten + Alt-API-Keys), analog SQL-Dumps
|
||||
dev/api/
|
||||
|
||||
# Bounce-Rückläufer: echte E-Mail-Adressen, gehören nicht ins Repository.
|
||||
dev/newsletter/
|
||||
|
||||
# Rechtstext-Quellen des Users (untracked Arbeitsstand)
|
||||
docs/legal/
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue