ForgeTotal.js 5
sv

Total.js 5

Skicka e-post från en vy

Total.js 5 · total5@0.0.19 mailsmtpemail Körd med Total.js 5

Total.js skickar e-post via SMTP. Servern och avsändaren anges i filen config: mail_smtp är servern, mail_smtp_options ett objekt med resten av anslutningsinställningarna (port, user, password, secure...) och mail_from / mail_from_name avsändaren. mail_reply, mail_cc och mail_bcc lägger till samma headers i varje meddelande.

MAIL(email, subject, view, model, [language], [callback]) renderar views/view.html med modellen (samma vyer som för sidor, inklusive lokalisering med @(...)) och skickar resultatet som HTML-body. email kan vara en adress eller flera avgränsade med kommatecken. HTMLMAIL(email, subject, html, [language], [callback]) skickar en sträng som du byggt själv. Båda returnerar meddelandet; callback(err) körs när servern har accepterat eller avvisat det, och err är null vid lyckat resultat.

Meddelanden köas och skickas direkt efter den aktuella ticken, så MAIL() blockerar aldrig förfrågan. Vänta på callbacken bara när användaren måste få veta om det gick bra.

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

Vyn renderas med layouten, som vilken sida som helst, så views/layout.html måste finnas (annars misslyckas förfrågan med ett ENOENT-fel). En e-postlayout kan vara så liten som den nedan, eller så kan du använda layouten för dina sidor.

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