E-Mail

Token-basierte E-Mail-Vorlagen, versendet über cbmailservices.

Auf dieser Seite

E-Mail

E-Mail-Vorlagen verwenden cbmailservices mit einfachen @token@-Platzhaltern, die beim Versand ersetzt werden:

<h1>Reset Your Password</h1>
<p>Click the link below to reset your password:</p>
<a href="@linkToken@">Reset Password</a>
<p>This link expires @expiration@.</p>

Versendet über einen Service-Aufruf:

mailService.newMail()
    .config( from = "noreply@app.com", to = user.getEmail(), subject = "Reset Password" )
    .setBodyTokens( { linkToken: resetLink, expiration: "in 60 minutes" } )
    .setBodyTemplate( "password_verification" )
    .send();

Mitgelieferte Vorlagen

VorlageGesendet wenn
user_welcome.bxmEin neues Konto wird erstellt
registration_verification.bxmEin neues Konto muss die E-Mail verifizieren
password_verification.bxmEin Link zum Zurücksetzen des Passworts wird angefordert
password_reset.bxmBestätigung nach einer Passwortänderung
email_change_confirmation.bxmEin Benutzer beantragt eine E-Mail-Änderung - gesendet an die neue Adresse zur Bestätigung
email_change_notice.bxmEin Benutzer beantragt eine E-Mail-Änderung - gesendet an die alte Adresse als Hinweis

Protokoll je Umgebung

Files-Protokoll in der Entwicklung

In der Entwicklung schreibt app/config/modules/cbmailservices.bx ausgehende E-Mails auf die Festplatte, statt sie zu versenden - nichts verlässt deinen Rechner, während du entwickelst. Konfiguriere für die Produktion einen echten SMTP-Provider (Postmark, SendGrid oder reines SMTP) - siehe Deployment.

Mail-Log-Viewer (Entwicklung)

Jede vom Files-Protokoll auf die Festplatte geschriebene E-Mail kann unter /cbmailservices/log durchsucht werden, während die App in der Entwicklung läuft. Es ist eine Seite von cbmailservices selbst (kein cbGenesis-Handler), die jede gesendete Nachricht mit einer gerenderten Vorschau und einer Rohquellen-Ansicht des tatsächlich erzeugten HTML auflistet:

The cbMailServices Log viewer, showing a rendered preview of a verification email
Vorschau - die gerenderte E-Mail, genau wie ein Empfänger sie sehen würde.
The cbMailServices Log viewer's Source tab, showing the raw HTML of a sent email
Quelle - das rohe HTML/die Metadaten, die cbmailservices auf die Festplatte geschrieben hat.

Der Viewer erscheint nur in der Entwicklung: Log.cfc prüft bei jeder Aktion controller.getSetting( "environment" ) == "development" und gibt andernfalls einen 404 zurück, sodass vor dem Deployment nichts deaktiviert werden muss.

Wie es deine E-Mails findet

Der Log-Service liest keinen festen Ordner - er untersucht jeden in app/config/modules/cbmailservices.bxs mailers-Einstellung registrierten Mailer und listet Nachrichten von jedem Mailer auf, der das File-Protokoll verwendet:

mailers : {
    "default" : { class : "BXMail" },
    "files" : { class : "File", properties : { filePath : "/app/logs" } }
},

cbGenesis liefert diesen files-Mailer von Haus aus mit, und development() in derselben Datei schaltet defaultProtocol auf "files" um - sodass jede E-Mail, die die App sendet, während environment development ist, automatisch dort landet, ohne dass etwas Zusätzliches konfiguriert werden muss.

Um ihn auf einen anderen Ordner zu richten, oder um einen zweiten dateibasierten Mailer hinzuzufügen, um eine andere Konfiguration isoliert zu testen, füge unter mailers einen Eintrag mit class: "File" und einem filePath hinzu oder bearbeite einen bestehenden; der Viewer erfasst jeden passenden Mailer, nicht nur files.

Nachrichten verwalten

Sowohl die Oberfläche als auch ihre zugrunde liegenden JSON-Routen unterstützen die Bereinigung, was nützlich ist, wenn ein Testlauf einen Haufen Nachrichten hinterlässt:

AktionRoute
Nachrichten auflisten (JSON)GET /cbmailservices/log/messages
Eine Nachricht ansehen (JSON)GET /cbmailservices/log/message/:id
Eine Nachricht löschenDELETE /cbmailservices/log/message/:id
Eine bestimmte Menge löschenDELETE /cbmailservices/log/messages mit { "ids": [...] }
Alles löschenDELETE /cbmailservices/log/messages mit { "all": true }
Diese Seite bearbeiten Markdown herunterladen Zuletzt aktualisiert Oct 1, 2026, 11:06:51 AM