ForgeTotal.js 5
hu

Total.js 5

E-mail küldése egy view-ból

Total.js 5 · total5@0.0.19 mailsmtpemail Total.js 5-tel lefuttatva

A Total.js SMTP-n küld levelet. A szerver és a feladó a config fájlba kerül: a mail_smtp a szerver, a mail_smtp_options egy objektum a kapcsolat többi beállításával (port, user, password, secure...), a mail_from / mail_from_name pedig a feladó. A mail_reply, mail_cc és mail_bcc ugyanezeket a fejléceket adja hozzá minden üzenethez.

A MAIL(email, subject, view, model, [language], [callback]) a modellel rendereli a views/view.html fájlt (ugyanazok a view-k, mint az oldalaknál, a @(...) lokalizációval együtt), és az eredményt HTML törzsként küldi. Az email lehet egy cím vagy több, vesszővel elválasztva. A HTMLMAIL(email, subject, html, [language], [callback]) egy általad összeállított szöveget küld. Mindkettő az üzenetet adja vissza; a callback(err) akkor fut, amikor a szerver elfogadta vagy elutasította, és az err sikerkor null.

Az üzenetek sorba kerülnek, és közvetlenül az aktuális tick után mennek ki, így a MAIL() sosem blokkolja a kérést. A callbackre csak akkor várj, ha a felhasználónak tudnia kell, sikerült-e.

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

A view-t a layouttal együtt rendereli, mint bármely oldalt, ezért a views/layout.html-nek léteznie kell (különben a kérés ENOENT hibával elbukik). Egy levél-layout lehet olyan kicsi, mint az alábbi, vagy használhatod az oldalaid layoutját.

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 });
	});
}