Как использовать руль с nodemailer для отправки электронной почты?
Я использую nodemailer для отправки электронных писем с помощью следующего https://github.com/mart-jansink/nodemailer-express-handlebars. Я использовал этот блог в качестве ссылки
Код компилирует welcome
шаблон, но не использует layout
Мой код, как показано ниже:
var nodemailer = require('nodemailer');
var mg = require('nodemailer-mailgun-transport');
var hbs = require('nodemailer-express-handlebars');
var config = {auth: {api_key: "key-xxx",domain: "mydomain.com}}
var nodemailerTransport = nodemailer.createTransport(mg(config));
var options = {
viewEngine: {
extname: '.handlebars',
layoutsDir: 'views/email/',
defaultLayout : 'layout',
},
viewPath: 'views/email/'
}
nodemailerTransport.use('compile', hbs(options));
nodemailerTransport.sendMail({
from: 'from@mydomain.com',
to: 'to@gmail.com',
subject: 'Welcome to the XXX',
template: 'welcome'
}, function (err, results) {
if (err) console.log('Error: ' + err);
else console.log('Response: ' + results);
});
мой layout.handlebars
имеет следующий код
<html>
<body>
{{> _header }}
{{{body}}}
{{> _footer }}
</body>
</html>
1 ответ
Вам не хватает partialsDir
вариант.
Я проверил со следующими параметрами, и он отлично работает:
var options = {
extName:'.hbs', /* or '.handlebars' */
viewPath:__dirname+'/views/email/',
layoutsDir:__dirname+'/view/email',
defaultLayout:'template',
partialsDir:__dirname+'/views/email/partials/'
}
Чтобы использовать мою структуру каталогов:
- Где сценарий разместить папку:
views
- Внутри него поместите папку с именем
email
(здесь магазин 'template.hbs') - Внутри папки электронной почты создайте
partials
папка (здесь в качестве примера магазина 'header.hbs')