Een e-mail versturen vanuit een view
Total.js verstuurt e-mail via SMTP. De server en de afzender staan in het bestand config: mail_smtp is de server, mail_smtp_options een object met de rest van de verbindingsinstellingen (port, user, password, secure...) en mail_from / mail_from_name de afzender. mail_reply, mail_cc en mail_bcc voegen dezelfde headers toe aan elk bericht.
MAIL(email, subject, view, model, [language], [callback]) rendert views/view.html met het model (dezelfde views als voor pagina's, inclusief lokalisatie met @(...)) en verstuurt het resultaat als HTML-body. email kan één adres zijn of meerdere gescheiden door komma's. HTMLMAIL(email, subject, html, [language], [callback]) verstuurt een tekenreeks die je zelf hebt gebouwd. Beide geven het bericht terug; callback(err) draait wanneer de server het heeft geaccepteerd of geweigerd, en err is null bij succes.
Berichten worden in een wachtrij geplaatst en direct na de huidige tick verstuurd, dus MAIL() blokkeert het verzoek nooit. Wacht alleen op de callback als de gebruiker moet weten of het gelukt is.
name : Mail example
mail_smtp : 127.0.0.1
mail_smtp_options : { port: 2526 }
mail_from : hello@example.com
mail_from_name : ExampleDe view wordt met de layout gerenderd, zoals elke pagina, dus views/layout.html moet bestaan (anders mislukt het verzoek met een ENOENT-fout). Een maillayout kan zo klein zijn als die hieronder, of je gebruikt de layout van je pagina's.
<!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 });
});
}