Inviare un'email da una vista
Total.js invia la posta via SMTP. Il server e il mittente vanno nel file config: mail_smtp è il server, mail_smtp_options un oggetto con le altre impostazioni di connessione (port, user, password, secure...) e mail_from / mail_from_name il mittente. mail_reply, mail_cc e mail_bcc aggiungono gli stessi header a ogni messaggio.
MAIL(email, subject, view, model, [language], [callback]) renderizza views/view.html con il modello (le stesse viste delle pagine, inclusa la localizzazione con @(...)) e invia il risultato come corpo HTML. email può essere un indirizzo o più indirizzi separati da virgole. HTMLMAIL(email, subject, html, [language], [callback]) invia una stringa che hai costruito tu. Entrambe restituiscono il messaggio; callback(err) viene eseguita quando il server lo ha accettato o rifiutato, e err è null in caso di successo.
I messaggi vengono messi in coda e inviati subito dopo il tick corrente, quindi MAIL() non blocca mai la richiesta. Aspetta la callback solo quando l'utente deve sapere se ha funzionato.
name : Mail example
mail_smtp : 127.0.0.1
mail_smtp_options : { port: 2526 }
mail_from : hello@example.com
mail_from_name : ExampleLa vista viene renderizzata con il layout, come qualsiasi pagina, quindi views/layout.html deve esistere (altrimenti la richiesta fallisce con un errore ENOENT). Un layout per le email può essere piccolo come quello qui sotto, oppure puoi usare il layout delle tue pagine.
<!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 });
});
}