Wysyłanie e-maila z widoku
Total.js wysyła pocztę przez SMTP. Serwer i nadawca trafiają do pliku config: mail_smtp to serwer, mail_smtp_options obiekt z resztą ustawień połączenia (port, user, password, secure...), a mail_from / mail_from_name to nadawca. mail_reply, mail_cc i mail_bcc dodają te same nagłówki do każdej wiadomości.
MAIL(email, subject, view, model, [language], [callback]) renderuje views/view.html z modelem (te same widoki co dla stron, łącznie z lokalizacją @(...)) i wysyła wynik jako treść HTML. email może być jednym adresem lub kilkoma oddzielonymi przecinkami. HTMLMAIL(email, subject, html, [language], [callback]) wysyła ciąg znaków zbudowany przez Ciebie. Obie zwracają wiadomość; callback(err) wykonuje się, gdy serwer ją przyjął lub odrzucił, a err jest null przy powodzeniu.
Wiadomości trafiają do kolejki i są wysyłane zaraz po bieżącym ticku, więc MAIL() nigdy nie blokuje żądania. Czekaj na callback tylko wtedy, gdy użytkownik musi wiedzieć, czy się udało.
name : Mail example
mail_smtp : 127.0.0.1
mail_smtp_options : { port: 2526 }
mail_from : hello@example.com
mail_from_name : ExampleWidok jest renderowany z layoutem, jak każda strona, więc views/layout.html musi istnieć (inaczej żądanie kończy się błędem ENOENT). Layout wiadomości e-mail może być tak mały jak poniższy albo możesz użyć layoutu swoich stron.
<!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 });
});
}