Может быть, это будет полезно для кого-то, так как этот вопрос уже ответил.
Я работаю с нефритом, и это было довольно сложно выяснить это, в конце концов, оказалось, очень просто :)
(PS: этот код не оптимизирован, это просто пример)
Js часть с nodemailer:
var nodemailer = require('nodemailer')
var jade = require('jade');
var config = {
// config for sending emails like username, password, ...
}
var emailFrom = '[email protected]';
var emailTo = '[email protected]';
var templateDir = 'path/to/templates/';
var transporter = nodemailer.createTransport(config);
var username = 'thisUsername'
// rendering html template (same way can be done for subject, text)
var html = jade.renderFile(templateDir+'/html.jade', {username: 'testUsername'});
//build options
var options = {
from: emailFrom,
to: emailTo,
subject: 'subject',
html: html,
text:'text'
};
transporter.sendMail(options, function(error, info) {
if(error) {
console.log('Message not sent');
console.log(info);
return false;
}
else{
console.log('Message sent: ' + info.response);
console.log(info);
return true;
};
});
html.jade
p test email html jade
p
| Username:
| !{username}
Вот пример использования шаблонов электронной почты и nodemailer.
JS файл:
var path = require('path');
var EmailTemplate = require('email-templates').EmailTemplate;
var transporter = nodemailer.createTransport(config);
var templateDir = path.join(__dirname, '/yourPath/emailTemplates', 'subdir');
var template = new EmailTemplate(templateDir)
var username = 'testUsername';
var transport = nodemailer.createTransport(config)
template.render(locals, function (err, results) {
if (err) {
return console.error(err)
}
// replace values in html template
console.log('template render')
console.log(err);
// default is results.html in this case
// read template and replace desired values
var res1 = results.html.toString();
var str = res1.replace('__username__', username);
console.log(str);
console.log('end template render')
transport.sendMail({
from: emailFrom,
to: emailTo,
subject: 'subject',
html: str,
text: results.text
}, function (err, responseStatus) {
if (err) {
return console.error(err)
}
console.log(responseStatus)
})
})
html.html
test email html
username:
<div>
__username__
</div>
Почему бы не использовать какой-либо из JS шаблонных двигателей (нефрит, EJS, усы)? Это именно та задача, для которой они созданы. – soulcheck
Его не для использования на стороне клиента, мне нужно его на стороне сервера, чтобы отправить электронное письмо. Я использую Jade на стороне сервера, но я не знаю, как использовать Jade в этом конкретном экземпляре. – MindWire
@Mindware ничего не мешает вам использовать шаблонный движок по вашему выбору на стороне сервера. Это просто javascript. – soulcheck