我是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,我发送的电子邮件中包含在同一文件中定义的HTML正文 - app.js.到目前为止工作正常。
但是,有没有什么办法可以将HTML与“name”的变量/占位符分开并放在其他文件中,以便可以直接管理正文内容?我可以通过某种方式将正文内容加载到变量emailBody
。
感谢。
答案 0 :(得分:5)
是!!创建一个名称为&#34; templates&#34;的文件夹。在里面为特定电子邮件创建文本文件。喜欢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(&#39;#name&#39;,&#39; abcd&#39;)
答案 1 :(得分:-1)
是的,您可以使用键值对维护JSON结构。
template.json
{
“主题”:“确认邮件”,
“正文”:高于HTML
}
然后你可以阅读需要这个JSON或将其作为参数传递给你的函数。
var template = require('./ templates.json);
var mail = {
from: "######################",
to: params.email,
subject:template.Subject,
text: "",
html: template.Body
}