NodeMailer 使用来自数据库的模板发送 HTML 封电子邮件
NodeMailer send HTML email with template from database
在我的应用程序中,我设置了 nodemailer 来发送电子邮件。该应用程序是使用 Vue 和 Firebase 构建的。
我需要修改来自 UI 的电子邮件模板,因此它们以 HTML 格式保存在数据库中。
在这些模板中,我需要能够使用动态值。
这是创建邮件的方法:
const mailOptions = {
from: "Test",
to: req.body.email,
subject: "New email from" + " " + req.body.email,
html: req.body.arenile.email_template
};
FireStore中req.body.arenile.email_template
的内容是:
<p>Date: ${req.body.reservation_date} </p><p>Email: ${req.body.email}</p>
问题是变量没有按原样评估和打印在电子邮件上。
我试过:
html: ` ${req.body.arenile.email_template}`
但是并没有解决。
如果我使用:
html: `<p>Date: ${req.body.reservation_date} </p><p>Email: ${req.body.email}</p>`
它工作正常。 ${req.body.email}
打印为 email@example.com
但是:
html: ` ${req.body.arenile.email_template}`
不会。 ${req.body.email}
打印为 ${req.body.email}
我不确定我是否需要以不同的方式转义 HTML 或者请求数据是否在错误的地方被评估..
我该如何解决?
我是这样解决的:
var html = req.body.arenile.email_template;
html = html.replace('{{email}}', req.body.email);
html: html
然后使用{{email}}
将打印当前值。
在我的应用程序中,我设置了 nodemailer 来发送电子邮件。该应用程序是使用 Vue 和 Firebase 构建的。 我需要修改来自 UI 的电子邮件模板,因此它们以 HTML 格式保存在数据库中。 在这些模板中,我需要能够使用动态值。
这是创建邮件的方法:
const mailOptions = {
from: "Test",
to: req.body.email,
subject: "New email from" + " " + req.body.email,
html: req.body.arenile.email_template
};
FireStore中req.body.arenile.email_template
的内容是:
<p>Date: ${req.body.reservation_date} </p><p>Email: ${req.body.email}</p>
问题是变量没有按原样评估和打印在电子邮件上。
我试过:
html: ` ${req.body.arenile.email_template}`
但是并没有解决。
如果我使用:
html: `<p>Date: ${req.body.reservation_date} </p><p>Email: ${req.body.email}</p>`
它工作正常。 ${req.body.email}
打印为 email@example.com
但是:
html: ` ${req.body.arenile.email_template}`
不会。 ${req.body.email}
打印为 ${req.body.email}
我不确定我是否需要以不同的方式转义 HTML 或者请求数据是否在错误的地方被评估..
我该如何解决?
我是这样解决的:
var html = req.body.arenile.email_template;
html = html.replace('{{email}}', req.body.email);
html: html
然后使用{{email}}
将打印当前值。