簡體   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