Как использовать руль с 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/'
 }

Чтобы использовать мою структуру каталогов:

  1. Где сценарий разместить папку: views
  2. Внутри него поместите папку с именем email (здесь магазин 'template.hbs')
  3. Внутри папки электронной почты создайте partials папка (здесь в качестве примера магазина 'header.hbs')
Другие вопросы по тегам