ForgeTotal.js 5
de

Total.js 5

Eine E-Mail aus einer View senden

Total.js 5 · total5@0.0.19 mailsmtpemail Mit Total.js 5 ausgeführt

Total.js sendet E-Mails über SMTP. Server und Absender stehen in der Datei config: mail_smtp ist der Server, mail_smtp_options ein Objekt mit den übrigen Verbindungseinstellungen (port, user, password, secure...) und mail_from / mail_from_name der Absender. mail_reply, mail_cc und mail_bcc fügen jeder Nachricht dieselben Header hinzu.

MAIL(email, subject, view, model, [language], [callback]) rendert views/view.html mit dem Modell (dieselben Views wie für Seiten, einschließlich der Lokalisierung mit @(...)) und sendet das Ergebnis als HTML-Body. email kann eine Adresse oder mehrere, durch Kommas getrennte sein. HTMLMAIL(email, subject, html, [language], [callback]) sendet eine Zeichenkette, die du selbst gebaut hast. Beide geben die Nachricht zurück; callback(err) läuft, wenn der Server sie angenommen oder abgelehnt hat, und err ist bei Erfolg null.

Nachrichten werden eingereiht und direkt nach dem aktuellen Tick gesendet, MAIL() blockiert die Anfrage also nie. Warte auf den Callback nur, wenn der Benutzer wissen muss, ob es geklappt hat.

config
name : Mail example
mail_smtp : 127.0.0.1
mail_smtp_options : { port: 2526 }
mail_from : hello@example.com
mail_from_name : Example

Die View wird mit dem Layout gerendert, wie jede Seite, daher muss views/layout.html existieren (sonst scheitert die Anfrage mit einem ENOENT-Fehler). Ein Mail-Layout kann so klein sein wie das unten, oder du verwendest das Layout deiner Seiten.

views/layout.html
<!DOCTYPE html>
<html>
<head><meta charset="utf-8" /></head>
<body style="font-family:Arial">@{body}</body>
</html>
views/welcome.html
<h1>Welcome, @{model.name}!</h1>
<p>Your account is ready.</p>
controllers/mail.js
exports.install = function() {
	ROUTE('POST /welcome/ @json', welcome);
	ROUTE('POST /note/ @json', note);
};

function welcome($) {
	MAIL($.body.email, 'Welcome aboard', 'welcome', { name: $.body.name }, function(err) {
		$.json({ sent: !err, error: err ? err.toString() : null });
	});
}

function note($) {
	HTMLMAIL($.body.email, 'A short note', '<p>Plain <b>HTML</b> message</p>', function(err) {
		$.json({ sent: !err, error: err ? err.toString() : null });
	});
}