[英]Node.js using sendgrid to send template
我在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的方式應該類似。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.