【问题标题】:How to use Mailgun variable in email template?如何在电子邮件模板中使用 Mailgun 变量?
【发布时间】:2020-05-08 09:22:55
【问题描述】:

我正在使用带有 nodejs+express 的 Mailgun API 来发送电子邮件。 我想过渡到使用模板,而不是将整个电子邮件写为 nodejs 中的 HTML 标记。

Mailgun 文档展示了如何将变量发送到模板,但没有展示如何在模板中使用它们。

这就是我发送 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("/");
});

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

【问题讨论】:

    标签: node.js express mailgun


    【解决方案1】:

    根据Mailgun Template Documentation,您可以使用下面提供的 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,
    };
    

    最后,根据他们的文档

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

    【讨论】:

    • 我解决了这个问题,但忘记发布我自己的答案。并没有澄清我的问题。我最终使用了接近选项 1 的东西。我的主要问题是在模板中设置变量。于是我用API创建了一个模板,发现变量的格式是这样的:模板的HTML中的{{variable}}
    猜你喜欢
    • 2017-08-06
    • 2020-06-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-07
    相关资源
    最近更新 更多