我发邮件与。
var data = {
to: "toemail",
from: "fromemail",
template: 'sendtimesheetemail',
subject: 'TimeSheet',
context: {
url: 'https://via.placeholder.com/150',
user: user.email
}
};
smtpTransport.sendMail(data, function(err) {
if (!err) {
return res.json({ message: 'Email has been sent' });
} else {
return res.status(423).json({ error: err });//done(err);
}
})
设置与
var handlebarsOptions = {
viewEngine: {
extname: '.html',
layoutsDir: 'templates',
defaultLayout : 'forgotpasswordemail',
partialsDir : 'templates'
},
viewPath: 'templates/',
extName: '.html'
};
var smtpTransport = nodemailer.createTransport({
service: "hotmail",
auth: {
user: email,
pass: pass
}
});
和url、user以及邮件主题都被替换成了预期的样子,我用一个不存在的文件替换了模板,Postman表示我们找对了目录。
然而,实际使用的模板总是默认的 forgotpasswordemail?
我也有同样的问题,只要把defaultLayout设置为空字符串,就可以根据mailoptions中的模板来决定。
var handlebarsOptions = {
viewEngine: {
extname: '.html',
layoutsDir: 'templates',
defaultLayout : '',
partialsDir : 'templates'
},
viewPath: 'templates/',
extName: '.html'
};