我正在尝试使用SendGrid发送电子邮件,并尝试为不同的案例设置多个模板。我的功能如下:
var file = "welcome.html"
sendgrid.send({
to: to,
from: from,
subject: subject,
data: {
//template vars go here
email: to,
confirmLink: confirmLink
},
template: "./" + file
}, function(err, json) {
if (err) { return console.error(err); }
console.log(json);
});
但是当我发送电子邮件时,我得到了
[Error: Missing email body]
是否有任何方法可以附加html模板,因为我不想使用带有html内容的硬编码字符串?
修改
读取文件并将其转换为字符串有效,但我不确定如何将动态变量传递到模板中。
有什么建议吗?
答案 0 :(得分:4)
我查看了源代码,并且有一种传递动态变量的方法。
<强> welcome.html 强>
<p>Welcome %email%</p>
<强> email.js 强>
var file = "welcome.html"
var stringTemplate = fs.readFileSync("./" + file, "utf8");
//create new Emaik object
var email = new sendgrid.Email();
email.addTo(to);
email.setFrom(from);
email.setSubject(subject);
email.setHtml(stringTemplate); //pass in the string template we read from disk
email.addSubstitution("%email%", to); //sub. variables
sendgrid.send(email, function(err, res){
//handle callbacks here
});
答案 1 :(得分:1)
您需要将模板转换为字符串。试试这个:
var fs = require('fs');
var stringTemplate = fs.readFileSync("welcome.html", "utf8");
然后:
sendgrid.send({
...
template: stringTemplate })