我创造了一个非常简单的" Hello world" sendgrid
中的模板。
现在,我希望使用此node server
通常发送邮件我必须做这样的事情:
email.send = function (Object) {
sendgrid.send({
from: Object.from,
to: Object.to,
subject: Object.subject,
html: Object.html,
text: Object.text
}, function (err, json) {
if (err) {
console.log('SendGrid error:');
return console.error(err);
}
console.log('SendGrid success');
});
};
但我不确定如何包含我的模板?
我似乎无法找到有关该主题的文档,所以我希望你们能够帮助我。
答案 0 :(得分:1)
我使用过' email-templates-v2'对于我的项目。首先编译模板文件,如下所示:
var EmailTemplate = require('email-templates-v2').EmailTemplate;
var templateDir = constants.email_templates_path + 'user-line-won';
var userWonTemplate = new EmailTemplate( templateDir );
现在,要将上下文数据传递到模板,请创建上下文对象。例如:
var templateContext = {};
templateContext.user = req.session.user;
templateContext.campaign = req.campaign;
templateContext.project = req.project;
现在,渲染模板并在回调函数中发送邮件。您将在成功回调中获得已编译的模板:
userWonTemplate.render(templateContext, function (err, results) {
if( err )
{
console.log( err );
res.render('error', {'title': 'Error', 'error': err, 'session': req.session});
}
else
{
var nodemailer = require("nodemailer");
var mailTransport = nodemailer.createTransport();
var mailOptions = {
from: fromEmail,
to: toEmail,
subject: subjectEmail,
text: "A user subject line has won.\n",
html: results.html
};
mailTransport.sendMail(mailOptions, function(error, response){
if(error){
console.log(error);
}else{
console.log("Message sent: " + response.message);
}
});
next();
}
});
我使用过nodemailer,但是将已编译的html传递给sendgrid的工作方式应该类似。