我正在将Mailgun API与nodejs + express一起使用来发送电子邮件。我想过渡到使用模板,而不是将整个电子邮件作为HTML标记写入nodejs。
Mailgun文档显示了如何将变量发送到模板,但没有如何在模板内部使用它们。
这是我发送Mailgun请求的方式
const data = {
from: "Shared Video <[email protected]>",
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("/");
});
那么,如何在电子邮件模板中使用这些变量?
根据Mailgun Template Documentation,您可以使用下面提供的2个选项中的任何一个来传递模板数据,
选项1
const data = {
from: "Shared Video <[email protected]>",
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 <[email protected]>",
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
标头提供变量。