handlebars.js - 如何使用带有 nodemailer 的 Handlebars 发送电子邮件?

标签 handlebars.js nodemailer express-handlebars

我正在使用 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>

最佳答案

您缺少一个 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”)
  • 关于handlebars.js - 如何使用带有 nodemailer 的 Handlebars 发送电子邮件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45302010/

    相关文章:

    javascript - Mustache.js - 不想更新特定的 div 表

    javascript - 检查 Emberjs 中的组件分配了哪些属性

    node.js - Node-RED 和 nodemailer - 错误 : unable to verify the first certificate

    node.js - Nodemailer:ECONNREFUSED

    handlebars.js - assemble: 在 {{parseJSON}} 中访问全局变量

    ember.js - 在自定义 Handlebars 助手中使用 linkTo

    node.js - 如何在NodeMailer的附件邮件选项中使用PDFMake的pdf输出?

    javascript - 如果长度未知, Handlebars 返回具有特定索引的数组元素

    handlebars.js - 使用 Nodemailer 和 Handlebars 发送电子邮件

    mysql - Express-handlebars 将多个数据集路由到一页