Node.js使用sendgrid发送模板

时间:2016-06-06 10:31:07

标签: javascript node.js sendgrid

我创造了一个非常简单的" 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');
    });
};

但我不确定如何包含我的模板?

我似乎无法找到有关该主题的文档,所以我希望你们能够帮助我。

1 个答案:

答案 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的工作方式应该类似。