CodamAIDocs
Themafertig

Versand und Branding

SMTP oder Log, Logo und Farben als Daten, Sprachen.

Ausprägungen
SMTPLogBenachrichtigung ausgeschaltetBranding über den KontextBranding über eine eigene VorlageSprachen

Worum es geht

Zwischen „eine Registrierung braucht eine Mail“ und „die Mail liegt im Postfach“ liegen drei Schritte. Das Modul, das die Mail braucht, sagt was gesagt werden soll. cias-notification entscheidet, wie: Es sucht die Vorlage, füllt sie aus und verschickt sie.

Vom Anlass zur Mail

Eine Mail entsteht
  1. 1
    CIAS
    die Registrierung stellt den Auftrag zusammen: welche Mail, an wen, Sprache, Mandant, Anwendung, Ablauf und der Kontext mit den Platzhaltern
  2. 2
    Hook
    jeder Registrierungs-Hook darf den Auftrag ergänzen, etwa um Markenname und Logo
  3. 3
    CIAS
    sucht die passende Vorlage und füllt sie aus
  4. 4
    CIAS→E-Mail
    verschickt die fertige Mail über SMTP, oder schreibt nur den Betreff ins Log
    Ergebnis: Mail verschickt

Die Versandarten

Wie eine Mail das Haus verlässt

Wann: codamai.cias.notification.mail: smtp

CIAS verschickt über den Mailserver, den Spring Boot mit spring.mail.host, port, username und password kennt. Der Absender steht in codamai.cias.notification.mail.from; ohne ihn startet die Anwendung nicht. Eine HTML-Mail geht als zwei Teile raus: HTML und eine daraus gewonnene reine Textfassung. Eine reine Textmail geht als ein Teil.

Ergebnis: Mail im Postfach. Scheitert der Server, scheitert der Aufruf, der die Mail ausgelöst hat. Nur bei der Willkommensmail ist die Registrierung trotzdem fertig

Wann: codamai.cias.notification.mail: log

Nichts wird verschickt. CIAS schreibt für jede Mail eine Warnung mit dem Betreff ins Log. Den Text nicht: Er kann einen Einmal-Link enthalten. Gedacht für die Entwicklung.

Ergebnis: Jeder Ablauf meldet Erfolg, aber niemand bekommt eine Mail

Wann: codamai.cias.notification.enabled: false

Das Modul tut nichts. Wer eine Mail verschicken will, bekommt einen Fehler, statt dass die Mail still verschwindet. Die Verwaltung der Vorlagen antwortet mit 404.

Ergebnis: Fehler beim Versuch zu verschicken

Die Einstellungen

EinstellungBedeutungeigenständiges CIASim Hub-Backend
codamai.cias.notification.enabledModul an oder austruefolgt CIAS_REGISTRATION
codamai.cias.notification.mailsmtp oder logsmtpCIAS_MAIL, Standard log
codamai.cias.notification.mail.fromAbsenderadresse, nur bei smtpaus der UmgebungCODAMAI_CIAS_NOTIFICATION_MAIL_FROM
spring.mail.*der Mailserveraus der UmgebungSPRING_MAIL_HOST, _PORT, _USERNAME, _PASSWORD
codamai.cias.notification.persistencejpa: alle Vorlagen in der System-Datenbank, beim Start aus der Auslieferung übernommenjpajpa
codamai.cias.notification.editor-roleswer jede Vorlage ändern darf (Umgebung CIAS_NOTIFICATION_EDITOR_ROLES)platform-admin,mail-template-adminPlattform-Administrator-Rollen, dazu dieselbe Einstellung
codamai.cias.notification.restVerwaltung der Vorlagen über HTTPtruefolgt CIAS_REGISTRATION
codamai.cias.notification.fallback-languageSprache der letzten Stufe der SucheDeutschDeutsch

Ohne persistence: jpa liegen keine Vorlagen in der Datenbank, und es lässt sich nichts bearbeiten. Die mitgelieferten gelten trotzdem, Mails gehen weiter raus.

Branding: Logo und Farben als Daten

Ein Kunde will seine Mails mit eigenem Namen, Logo und Farben. Dafür gibt es zwei Wege:

Zwei Wege zu eigenem Aussehen

Wann: Viele Kunden, jeder mit eigenem Namen und Logo, aber gleichem Wortlaut.

Ein Registrierungs-Hook ergänzt in beforeNotification den Kontext, etwa um brandName, logoUrl und primaryColor, passend zum Mandanten. Eine Vorlage je Mail und Sprache liest diese Werte. So gibt es keine hundert Kopien derselben Mail, die mit der Zeit auseinanderlaufen.

Ergebnis: ein Wortlaut, viele Marken

Wann: Ein Kunde will andere Worte, nicht nur ein anderes Logo.

Eine Vorlage für diesen Mandanten speichern, siehe Vorlagen bearbeiten. Sie gilt nur für diesen Kunden, in jedem Produkt.

Ergebnis: eigener Wortlaut für einen Kunden

Die mitgelieferten Vorlagen sind reiner Text und lesen keine Markenwerte. Wer Branding über den Kontext nutzt, ändert also die Standardfassung so, dass sie brandName und die anderen Werte einsetzt. Mails der Benutzerverwaltung (PASSWORD_SETUP) laufen nicht über Registrierungs-Hooks; sie bekommen Branding nur über eine Vorlage.

Was will der Kunde?
Anderes Aussehen?Andere Worte?Weg
janeinKontext über einen Hook, eine gemeinsame Vorlage
–jaeigene Vorlage für den Mandanten
neinneinnichts tun, die Vorlage der Installation gilt

Sprachen

Jede Mail hat eine Sprache. Bei der Registrierung kommt sie aus der Anfrage (locale), ohne Angabe ist es Deutsch. CIAS liefert jede Vorlage auf Deutsch und Englisch aus. Für jede weitere Sprache speicherst du eigene Vorlagen. Fehlt eine Sprache, geht die Mail in der Rückfallsprache raus.

Fallen

Weiter

Quellen im Code und in der Wissensdatenbank
  • CIAS/cias-notification – CiasNotificationConfiguration (codamai.cias.notification.enabled, persistence, rest, mail, mail.from, fallback-language; ciasMailSender, smtpMailSenderFactory)
  • CIAS/cias-notification – SmtpMailSender, PlainTextAlternative, LoggingMailSender, DisabledMailSender, MailDeliveryException, NotificationDisabledException
  • CIAS/cias-notification – api.MailRequest (with, Branding im Kontext), FreeMarkerMailRenderer
  • CIAS/cias-registration – RegistrationService.sendMail, RegistrationHook.beforeNotification
  • CIAS/cias-runtime – application.yml (codamai.cias.notification); hub-backend – application.yaml (CIAS_MAIL, CODAMAI_CIAS_NOTIFICATION_MAIL_FROM, SPRING_MAIL_*)
  • CIAS/cias-notification/docs/adr – ADR-019
Suchen