当我将动态数据发送到模板时,我已经在nodejs中使用email-template-v2
,它不显示动态内容,它是唯一的显示变量
代码在这里
var template = new EmailTemplate(templateDir)
var nodemailer = require('nodemailer');
var transporter = nodemailer.createTransport({
service: 'gmail',
auth: {
user: '***@***.com',
pass: '*******'
}
});
var locals = {
userName: "XYZ" //dynamic data for bind into the template
};
template.render(locals, function (err, temp) {
if (err) {
console.log("error", err);
} else {
transporter.sendMail({
from: '****',
to: "*****@gmail.com",
html: temp.html,
text: temp.text,
subject: temp.subject,
}, function (error, info) {
if (error) {
console.log(error);
}
console.log('Message sent: ' + info.response);
})
}
})
temp.html文件代码
<html>
<head>
</head>
<body>
<div style="margin:0 auto;max-width:600px;">
<p>Hi,{userName}</br>
How are you It's testing mail
</br></br>
Thanks
</div>
</body>
</html>
电子邮件输出就像这样
Hi,{userName} How are you It's testing mail Thanks
我想要这个
Hi,XYZ How are you It's testing mail Thanks
答案 0 :(得分:1)
对于您要替换的本地JSON对象中的任意数量的变量,您绝对可以尝试使用这种有效的方法:
在模板中将此格式用于要替换的变量:
您好,例如$ {userName}。
从模板的存储位置(在我的情况下,我从数据库中获取模板)获取模板(在您的情况下为template.html),并将其临时存储在变量中,例如emailTemplate。
< / li>然后传递模板(emailTemplate)和带有所有要变量的json 替换(本地)修改ModifyTemplate函数:
let ModifyTemplate = this.modifyTemplate(emailTemplate,locals);
以这种方式定义modifyTemplate函数:
modifyTemplate: function (tpl, args) {
var keys = Object.keys(args),
fn = new Function(...keys,
'return `' + tpl.replace(/`/g, '\\`') + '`');
return fn(...keys.map(x => args[x]));
}
您现在将使用ModifyedTemplate变量中的值替换模板。
答案 1 :(得分:0)
我找到了
我用<% %>
代替了{}
及其工作
我用这个
<%= userName%>;