我在sendgrid
中创建了一个非常简单的“ Hello world”模板。
现在,我希望通过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');
});
};
但是我不确定我怎么能包括我的模板?
我似乎找不到有关该主题的文档,因此希望大家能为我提供帮助。
最佳答案
我在项目中使用了“ 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的方式应该类似。