使用nodemailer

时间:2016-09-20 01:06:37

标签: javascript node.js nodemailer

我遇到的问题是我只能发送带有附件或模板数据的电子邮件,但我还没有找到发送两者的方法。

这是我的代码:

var EmailTemplate = require('email-templates').EmailTemplate;
var template = new EmailTemplate('templates/welcome');
template.render({}, function(err, results) {
  var send = transporter.templateSender({
    from: '<ouremail@gmail.com>',
    html: results.html,
    attachments: [{
      filename: 'file1.png',
      path: 'templates/file1.png',
      cid: 'file1'
    }, {
      filename: 'file2.png',
      path: 'templates/file2.png',
      cid: 'file2'
    }]
  });

  send({
    to: String(user.emailAddress),
    subject: 'Welcome to the Our Site!'
  }, {name: user.firstName}, callback);
});

如果我按照上面显示的方式进行操作,则会显示名称模板变量,但图片不会显示。如果我改为

var send = transporter.templateSender(template, ...

然后呈现附件,而不是模板变量。

我知道我可以使用像Jade或Handlebars这样的模板包来做这种事情,但是当nodemailer拥有我需要的所有功能时,这似乎有些过分。

任何帮助将不胜感激。 谢谢!

1 个答案:

答案 0 :(得分:1)

我做的完全一样,在Go LIVE之前我浪费了宝贵的4个小时来解决这个问题。但最后我找到了答案。

保留附件的位置在send()部分而不是templateSender(),因此代码应如下所示:

send({
    to: String(user.emailAddress),
    subject: 'Welcome to the Our Site!',
    attachments:[{
      filename: 'file1.png',
      path: 'templates/file1.png',
      cid: 'file1'
    }, {
      filename: 'file2.png',
      path: 'templates/file2.png',
      cid: 'file2'
    }]
  }, {name: user.firstName}, callback);

希望它有所帮助!