NodeJS 如何在邮件模板中使用Mailgun变量?

2fjabf4q  于 2022-12-18  发布在  Node.js
关注(0)|答案(2)|浏览(120)

我正在使用Mailgun API和nodejs+express来发送电子邮件,我想过渡到使用模板,而不是在nodejs中将整个电子邮件写为HTML标记。
Mailgun文档说明了如何将变量发送到模板,但没有说明如何在模板中使用它们。
我就是这样发送邮件请求的

const data = {
    from: "Shared Video <Share@website-template.com>",
    to: shareTo,
    subject: subject,
    template: "share_video",
    v: (subject = subject),
    v: (shareToName = shareToName),
    v: (userName = userName),
    v: (videoTitle = videoTitle),
    v: (videoID = videoID),
};
mailgun.messages().send(data, function (error, body) {
    console.log(body);
    req.flash("success", "Video Shared");
    res.redirect("/");
});

那么,我如何在电子邮件模板中使用这些变量呢?

p1iqtdky

p1iqtdky1#

您可以在模板中使用变量,将其称为{{variable_name}}。例如,post方法中的“v:video”在模板中将只是{{video}}。

uqcuzwp8

uqcuzwp82#

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

备选案文1

const data = {
  from: "Shared Video <Share@website-template.com>",
  to: shareTo,
  subject: subject,
  template: "share_video",
  'h:X-Mailgun-Variables': JSON.stringify({
    subject: subject,
    shareToName: shareToName,
    userName: userName,
    videoTitle: videoTitle,
    videoID: videoID
  })
};

备选案文2

const data = {
  from: "Shared Video <Share@website-template.com>",
  to: shareTo,
  subject: subject,
  template: "share_video",
  'v:subject': subject,
  'v:shareToName': shareToName,
  'v:userName': userName,
  'v:videoTitle': videoTitle,
  'v:videoID': videoID,
};

最后根据他们的文件
第二种方式(在我们的例子中是 Option 2)不推荐,因为它只限于简单的键值数据。如果你有数组,字典或者复杂的json数据,你必须通过X-Mailgun-Variables头提供变量。

相关问题