如何使用模板引擎在nodejs中将文本作为电子邮件发送

时间:2016-06-05 06:14:29

标签: javascript node.js express template-engine

MsSql - 2014

我最近开始在nodeJs上编程。

我在数据库表格中有电子邮件模板。

例如:

   message1 : Hello {friendName},
                  Happy Birthday {friendName}.
                  Thank you,
                  {Name}

    message2 : Hello All,
                  The total expense as;
                    {ListOfExpense}
                  Thank you,
                  {Name}

对于消息1 - 我在输入obj上输入了UI作为名称和friendName。 对于消息2 - 我在input.expense obj。

上有费用列表的UI输入

我能从DB中读取,请在var dbMessage = message 1或message 2;

中读取

我想使用模板引擎根据模板更改{}值并存储在文本上,以便我可以在主体上进行设置。

我正在使用nodemailer发送邮件;

var mailOptions={
        to : req.query.to,
        subject : req.query.subject,
        text : ? // I want use text as email body.
    }

    smtpTransport.sendMail(mailOptions, function(error, response){
        if(error){
           res.end("error");
        }else{
           res.end("sent");
        }
    });

请帮助。

1 个答案:

答案 0 :(得分:1)

嗯,你可以通过多种方式做到这一点。

ES6模板文字

您只进行字符串插值,因此您可以非常轻松地使用ES6 template literals ..

的函数
function myTemplate(env) {
    const template = `Hello ${env.friendName},
                  Happy Birthday ${env.friendName}.
                  Thank you,
                  ${env.Name}`;
    return template.replace(/\n/, '<br>');
}

var mailOptions={
        to : req.query.to,
        subject : req.query.subject,
        text : myTemplate({friendName: "foo", Name: "Bar"});
    };

你可能想稍微调整一下,但这会让你开始。

花哨的全功能模板引擎

其他模板语言包括Pugjs(以前为Jade),Handlebars.js_.template。通常这些更专业的第三方模板编译成JavaScript函数,它们的调用方式与上面的函数相同。所有上述引擎都必须以自己的方式设置......

const pug = require('pug');
const myTemplate = pug.compileFile('myPugPath.pug');
myTemplate({friendName: "foo", Name: "Bar"});

此外,您发送电子邮件与此问题无关。只是以某种方式编写一个HTML字符串(例如,使用ES6模板文字或哈巴狗),然后发送正确设置的mime类型(text/html),并将正文设置为html。

从DB

加载模板

如果您的数据库中有模板,那么您只需使用pug.compile(resultFromDb.pugTemplate)而不是pug.compileFile。有关更多信息,请查看关于哈巴狗的文档。