繁体   English   中英

Node.js使用sendgrid发送模板

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM