【问题标题】:How to use handlebars with nodemailer to send email?如何使用带有 nodemailer 的车把发送电子邮件?
【发布时间】:2017-07-25 11:31:55
【问题描述】:

我正在使用 nodemailer 使用以下 nodemailer-express-handlebars 插件发送电子邮件。我用这篇{dead blog post}作为参考

代码正在编译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>

【问题讨论】:

    标签: handlebars.js nodemailer express-handlebars


    【解决方案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”为例)

    【讨论】:

      猜你喜欢
      • 2017-12-04
      • 2019-05-21
      • 2015-01-13
      • 2015-05-19
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多