Mailgun.js是否可以发送模板?

时间:2018-11-08 08:38:45

标签: node.js email mailgun mailing

因此MailGun提供了通过实现其API的Node库发送电子邮件的可能性:

var mailgun = require('mailgun-js')({ apiKey: api_key, domain: DOMAIN });

var filepath = path.join(__dirname, 'sample.jpg');

var data = {
  from: 'Excited User <me@samples.mailgun.org>',
  to: 'foo@example.com, baz@example.com, bar@example.com',
  cc: 'baz@example.com',
  bcc: 'bar@example.com',
  subject: 'Complex',
  text: 'Testing some Mailgun awesomness!',
  html: "<html>HTML version of the body</html>",
  attachment: filepath
};

mailgun.messages().send(data, function (error, body) {
  console.log(body);
});

它们还提供了设计和创建Email Templates的可能性。有没有办法通过其API发送带有一些自定义变量的模板化电子邮件?像这样:

var data = {
  from: 'Excited User <me@samples.mailgun.org>',
  to: 'foo@example.com, baz@example.com, bar@example.com',

  template: "withdraw_request_approved", //Instead of 'html'
  vars: { firstName: 'John', lastName: 'Doe' }
};

mailgun.messages().send(data, function (error, body) {
  console.log(body);
});

如果没有,您是否可以建议其他提供这种功能的邮件服务? (我跳过了Mandrill,因为它显然已经关闭了,尚不清楚何时可以再次使用它。)

2 个答案:

答案 0 :(得分:0)

是的,您可以按照您的情况选择以下格式:

var data = {
  from: 'Excited User <me@samples.mailgun.org>',
  to: 'foo@example.com, baz@example.com, bar@example.com',

  template: "withdraw_request_approved", //Instead of 'html'
  'v:firstName': 'John',
  'v:lastName': 'Doe'
};

答案 1 :(得分:0)

根据Mailgun Template Documentation,您可以使用下面提供的2个选项中的任何一个来传递模板数据,

选项1

var data = {
  from: 'Excited User <me@samples.mailgun.org>',
  to: 'alice@example.com',
  subject: 'Hello',
  template: 'template.test',
  h:X-Mailgun-Variables: '{"title": "API Documentation", "body": "Sending messages with templates"}'
};

在此示例h:X-Mailgun-Variables中,这是我在更新对象时所遇到的棘手问题。

var data = {
  from: 'Excited User <me@samples.mailgun.org>',
  to: 'alice@example.com',
  subject: 'Hello',
  template: 'template.test',
  'h:X-Mailgun-Variables': JSON.stringify({
    title: "API Documentation",
    body: "Sending messages with templates"
  })
};

选项2

尽管在previous answer中已经对此进行了解释,但为完整性起见,我还要补充这一点。

var data = {
  from: 'Excited User <me@samples.mailgun.org>',
  to: 'alice@example.com',
  subject: 'Hello',
  template: 'template.test',
  'v:title': 'API Documentation',
  'v:body': 'Sending messages with templates'
};

最后,根据他们的文档

第二种方法(在我们的示例中为选项2 )不建议使用,因为它仅限于简单键值 数据。如果您有数组,值中的字典或复杂的json数据 您必须通过X-Mailgun-Variables标头提供变量。