如何从 NodeJS 中的另一个文件读取 HTML(对于电子邮件正文)
How to read HTML (for email body) from another file in NodeJS
我是 NodeJS 新手。
我开始在联系我们页面上工作,该页面在提交后会向用户发送一封确认电子邮件,其中包含以下内容 HTML。
<p>Hello Sujit,</p>
<p>Thank you for approaching us.</p>
<p>We have received your request and our executive will get in touch with you soon.</p>
<p>Thank you.</p>
以下是发送邮件的代码:
var mailer = require("nodemailer");
var emailBody = "<HTML above>";
// Use Smtp Protocol to send Email
var smtpTransport = mailer.createTransport("SMTP",{
service: "#######",
auth: {
user: "#########",
pass: "#######"
}
});
var mail = {
from: "######################",
to: params.email,
subject: "Welcome user.",
text: "",
html: emailBody
}
smtpTransport.sendMail(mail, function(error, response){
if(error){
console.log("Mail error:>>");
console.log(error);
}else{
console.log("Message sent: " + response.message);
}
smtpTransport.close();
});
目前,我使用 nodemailer 发送这封电子邮件,其正文定义在同一文件 - app.js 中 HTML。到目前为止它工作正常。
但是,有什么办法可以将 HTML 与 variables/placeholders 分开 "name" 并放置在其他文件中,以便可以直接管理正文内容?我可以通过某种方式将正文内容加载到变量 emailBody
.
谢谢。
是的!!在其中创建一个名称为 "templates" 的文件夹,为特定电子邮件创建文本文件。喜欢welcome.txt。在 welcome.txt 中编写类似
的代码
<p>Hello #name,</p>
<p>Thank you for approaching us.</p>
然后使用 fs 模块,您可以像 fs.readFile([filepath]) 一样读取该文件并将该值存储在变量中。比如 var mailContent = fs.readFile([filepath])。然后使用 javascript 替换函数将 #name 替换为实际名称。
喜欢 mailContent.replace('#name','abcd')
是的,你可以用键值对维护一个JSON结构。
template.json
{
"Subject" : "Acknowledgement Mail",
"Body" : 以上 HTML
}
然后您可以阅读 require this JSON 或将其作为参数传递给您的函数。
var template = require('./templates.json);
var 邮件 = {
from: "######################",
to: params.email,
subject:template.Subject,
text: "",
html: template.Body
}
我是 NodeJS 新手。 我开始在联系我们页面上工作,该页面在提交后会向用户发送一封确认电子邮件,其中包含以下内容 HTML。
<p>Hello Sujit,</p>
<p>Thank you for approaching us.</p>
<p>We have received your request and our executive will get in touch with you soon.</p>
<p>Thank you.</p>
以下是发送邮件的代码:
var mailer = require("nodemailer");
var emailBody = "<HTML above>";
// Use Smtp Protocol to send Email
var smtpTransport = mailer.createTransport("SMTP",{
service: "#######",
auth: {
user: "#########",
pass: "#######"
}
});
var mail = {
from: "######################",
to: params.email,
subject: "Welcome user.",
text: "",
html: emailBody
}
smtpTransport.sendMail(mail, function(error, response){
if(error){
console.log("Mail error:>>");
console.log(error);
}else{
console.log("Message sent: " + response.message);
}
smtpTransport.close();
});
目前,我使用 nodemailer 发送这封电子邮件,其正文定义在同一文件 - app.js 中 HTML。到目前为止它工作正常。
但是,有什么办法可以将 HTML 与 variables/placeholders 分开 "name" 并放置在其他文件中,以便可以直接管理正文内容?我可以通过某种方式将正文内容加载到变量 emailBody
.
谢谢。
是的!!在其中创建一个名称为 "templates" 的文件夹,为特定电子邮件创建文本文件。喜欢welcome.txt。在 welcome.txt 中编写类似
的代码<p>Hello #name,</p>
<p>Thank you for approaching us.</p>
然后使用 fs 模块,您可以像 fs.readFile([filepath]) 一样读取该文件并将该值存储在变量中。比如 var mailContent = fs.readFile([filepath])。然后使用 javascript 替换函数将 #name 替换为实际名称。 喜欢 mailContent.replace('#name','abcd')
是的,你可以用键值对维护一个JSON结构。
template.json
{
"Subject" : "Acknowledgement Mail",
"Body" : 以上 HTML
}
然后您可以阅读 require this JSON 或将其作为参数传递给您的函数。
var template = require('./templates.json);
var 邮件 = {
from: "######################",
to: params.email,
subject:template.Subject,
text: "",
html: template.Body
}