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");
}
});
请帮助。
答案 0 :(得分:1)
嗯,你可以通过多种方式做到这一点。
您只进行字符串插值,因此您可以非常轻松地使用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。
如果您的数据库中有模板,那么您只需使用pug.compile(resultFromDb.pugTemplate)
而不是pug.compileFile
。有关更多信息,请查看关于哈巴狗的文档。