Envoyer un e-mail à partir d'une vue
Total.js envoie le courrier par SMTP. Le serveur et l'expéditeur se règlent dans le fichier config : mail_smtp est le serveur, mail_smtp_options un objet avec le reste des réglages de connexion (port, user, password, secure...) et mail_from / mail_from_name l'expéditeur. mail_reply, mail_cc et mail_bcc ajoutent ces mêmes en-têtes à chaque message.
MAIL(email, subject, view, model, [language], [callback]) rend views/view.html avec le modèle (les mêmes vues que pour les pages, y compris la localisation @(...)) et envoie le résultat comme corps HTML. email peut être une adresse ou plusieurs séparées par des virgules. HTMLMAIL(email, subject, html, [language], [callback]) envoie une chaîne que vous avez construite vous-même. Les deux renvoient le message ; callback(err) s'exécute quand le serveur l'a accepté ou refusé, et err vaut null en cas de succès.
Les messages sont mis en file d'attente et envoyés juste après le tick courant, donc MAIL() ne bloque jamais la requête. N'attendez le callback que lorsque l'utilisateur doit savoir si cela a fonctionné.
name : Mail example
mail_smtp : 127.0.0.1
mail_smtp_options : { port: 2526 }
mail_from : hello@example.com
mail_from_name : ExampleLa vue est rendue avec le layout, comme n'importe quelle page, donc views/layout.html doit exister (sinon la requête échoue avec une erreur ENOENT). Un layout de courrier peut être aussi petit que celui ci-dessous, ou vous pouvez utiliser le layout de vos pages.
<!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 });
});
}