E-Mail-System
E-Mail-System
Abschnitt betitelt „E-Mail-System“3-Stufen-Architektur (asynchron)
Abschnitt betitelt „3-Stufen-Architektur (asynchron)“- Handler (alle 10s): Prueft auf ausstehende Business-Events
TwoFactorCodeHandler— prueftlogin_attemptauf neue 2FA-CodesWelcomeHandler— prueft auf neue Accounts
- Preparation Worker (alle 10s): Rendert Templates, erstellt
system_message- Template-Lookup: Site → Tenant → System (3-Ebenen-Hierarchie)
- Uebersetzungen aus
email_translation_key(Scope: global/tenant/site) - Idempotent:
NOT EXISTSPruefung vor Insert
- Dispatch Worker (alle 10s): Versendet pending Mails
- Produktion: AWS SES
- Entwicklung: SMTP (MailHog)
- Max 3 Retries, trackt
sent_atoderfailed_at
Templates
Abschnitt betitelt „Templates“Vorhandene Templates (DB-Seeds)
Abschnitt betitelt „Vorhandene Templates (DB-Seeds)“| Template | Beschreibung |
|---|---|
| layout | Basis-HTML-Layout |
| signature | E-Mail-Signatur |
| two_factor_code | 2FA-Code mit Standort, IP, Geraet |
| password_reset_code | Reset-Code (Admin-initiiert) |
| password_changed | Bestaetigung nach Passwort-Aenderung |
| account_deactivated | Account-Deaktivierung durch Admin |
| new_device_login | Login von neuem Geraet nach 2FA |
| contact_notification | Benachrichtigung bei Kontaktanfrage |
| contact_confirmation | Bestaetigung an Besucher |
| welcome | Willkommens-E-Mail mit Login-Link |
Template-Hierarchie (3 Ebenen)
Abschnitt betitelt „Template-Hierarchie (3 Ebenen)“| Ebene | Beschreibung |
|---|---|
| System-Default | Basis-Templates (von Agency gepflegt) |
| Tenant-Override | Kunde ueberschreibt fuer seinen Mandanten |
| Site-Override | Spezifisch pro Website des Kunden |
Lookup-Reihenfolge: Site → Tenant → System. Erstes Ergebnis gewinnt.
Uebersetzungen
Abschnitt betitelt „Uebersetzungen“DE + EN Seeds fuer alle gaengigen Strings (Anrede, Betreff, Footer, etc.). Scope-Hierarchie: Site → Tenant → Global.
E-Mail-Adressen-Modell
Abschnitt betitelt „E-Mail-Adressen-Modell“Separate email-Tabelle (dedupliziert per SHA-256) mit email_relation-Verknuepfung.
account.email existiert nicht — Login laeuft ueber email_relation (type: account_primary).
E-Mail-Typen Stufe 1
Abschnitt betitelt „E-Mail-Typen Stufe 1“| Typ | Empfaenger | Ausloeser |
|---|---|---|
| 2FA-Login-Code | Account-User | Login von unbekanntem Device |
| Password-Reset-Code | Account-User | Admin loest Reset aus |
| Password-Changed | Account-User | Passwort geaendert |
| Account-Deactivated | Account-User | Admin deaktiviert Account |
| New-Device-Login | Account-User | Login von neuem Geraet |
| Kontakt-Notification | Tenant-Kontaktadresse | Neue Kontaktanfrage |
| Kontakt-Bestaetigung | Besucher | Kontaktanfrage abgeschickt |
| Willkommen | Account-User | Account angelegt |