【问题标题】:Node.js using sendgrid to send templateNode.js 使用 sendgrid 发送模板
【发布时间】:2016-06-06 10:31:06
【问题描述】:

我在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');
    });
};

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

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

【问题讨论】:

  • 不清楚您所说的“使用此模板发送电子邮件”是什么意思。
  • @Paul in sengrid 你可以创建模板我希望使用该模板发送邮件
  • @Sami 没错,我找到了!

标签: javascript node.js sendgrid


【解决方案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应该也可以工作。

【讨论】:

  • 这正是我想要避免的(如果可以的话)使用它需要大量代码,我希望我可以使用 sendgrid 的 api 来使用我在那里制作的模板来保持我的代码整洁和小
  • 是的,@Sami 在他的评论中明确指出了这一点。在这种情况下,我的回答是无关紧要的。 :(
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-05-15
  • 1970-01-01
  • 2020-04-07
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多