ForgeTotal.js 5
el

Total.js 5

Αποστολή email από ένα 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 με το μοντέλο (τα ίδια views με τις σελίδες, συμπεριλαμβανομένης της τοπικοποίησης με @(...)) και στέλνει το αποτέλεσμα ως σώμα 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 email μπορεί να είναι τόσο μικρό όσο το παρακάτω, ή μπορείτε να χρησιμοποιήσετε το 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 });
	});
}