ForgeTotal.js 5
bg

Total.js 5

Изпращане на имейл от view

Total.js 5 · total5@0.0.19 mailsmtpemail Изпълнено с Total.js 5

Total.js изпраща поща по SMTP. Сървърът и изпращачът се задават във файла config: mail_smtp е сървърът, mail_smtp_options е обект с останалите настройки на връзката (port, user, password, secure...), а mail_from / mail_from_name е изпращачът. mail_reply, mail_cc и mail_bcc добавят същите хедъри към всяко съобщение.

MAIL(email, subject, view, model, [language], [callback]) изобразява views/view.html с модела (същите view като за страниците, включително локализацията с @(...)) и изпраща резултата като HTML тяло. email може да е един адрес или няколко, разделени със запетаи. HTMLMAIL(email, subject, html, [language], [callback]) изпраща низ, който сте изградили сами. И двете връщат съобщението; callback(err) се изпълнява, когато сървърът го е приел или отхвърлил, а err е null при успех.

Съобщенията се слагат в опашка и се изпращат веднага след текущия tick, така че MAIL() никога не блокира заявката. Чакайте callback само когато потребителят трябва да знае дали е успяло.

config
name : Mail example
mail_smtp : 127.0.0.1
mail_smtp_options : { port: 2526 }
mail_from : hello@example.com
mail_from_name : Example

View се изобразява с layout, както всяка страница, затова views/layout.html трябва да съществува (иначе заявката се проваля с грешка ENOENT). Layout за имейл може да е толкова малък, колкото долния, или можете да използвате layout на страниците си.

views/layout.html
<!DOCTYPE html>
<html>
<head><meta charset="utf-8" /></head>
<body style="font-family:Arial">@{body}</body>
</html>
views/welcome.html
<h1>Welcome, @{model.name}!</h1>
<p>Your account is ready.</p>
controllers/mail.js
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 });
	});
}