Sendgrid:发送带模板的电子邮件

时间:2015-02-27 21:07:31

标签: email sendgrid

我正在尝试使用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内容的硬编码字符串?

修改

读取文件并将其转换为字符串有效,但我不确定如何将动态变量传递到模板中。

有什么建议吗?

2 个答案:

答案 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 })