Trimite un e-mail dintr-un view
Total.js trimite poșta prin SMTP. Serverul și expeditorul se pun în fișierul config: mail_smtp este serverul, mail_smtp_options un obiect cu restul setărilor de conexiune (port, user, password, secure...), iar mail_from / mail_from_name este expeditorul. mail_reply, mail_cc și mail_bcc adaugă aceleași antete fiecărui mesaj.
MAIL(email, subject, view, model, [language], [callback]) randează views/view.html cu modelul (aceleași view-uri ca pentru pagini, inclusiv localizarea cu @(...)) și trimite rezultatul ca și corp HTML. email poate fi o adresă sau mai multe separate prin virgule. HTMLMAIL(email, subject, html, [language], [callback]) trimite un șir construit de tine. Ambele returnează mesajul; callback(err) rulează când serverul l-a acceptat sau respins, iar err este null la succes.
Mesajele sunt puse în coadă și trimise imediat după tick-ul curent, deci MAIL() nu blochează niciodată cererea. Așteaptă callbackul doar când utilizatorul trebuie să știe dacă a mers.
name : Mail example
mail_smtp : 127.0.0.1
mail_smtp_options : { port: 2526 }
mail_from : hello@example.com
mail_from_name : ExampleView-ul este randat cu layout-ul, ca orice pagină, deci views/layout.html trebuie să existe (altfel cererea eșuează cu o eroare ENOENT). Un layout pentru e-mail poate fi la fel de mic ca cel de mai jos, sau poți folosi layout-ul paginilor tale.
<!DOCTYPE html>
<html>
<head><meta charset="utf-8" /></head>
<body style="font-family:Arial">@{body}</body>
</html><h1>Welcome, @{model.name}!</h1>
<p>Your account is ready.</p>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 });
});
}