如何从NodeJS中的另一个文件中读取HTML(用于电子邮件正文)

我是NodeJS的新手。 我开始创build一个联系我们的页面,当提交时,发送一个确认邮件,下面的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与variables/占位符分开为“名称”并放置在其他文件中,以便直接pipe理正文内容? 我可以通过某种方式将正文内容加载到variablesemailBody

谢谢。

是!! 创build一个名称为“模板”的文件夹,为特定的电子邮件创build文本文件。 像welcome.txt一样。 在welcome.txt中写代码就好

 <p>Hello #name,</p> <p>Thank you for approaching us.</p> 

然后使用fs模块,你可以像fs.readFile([filepath])那样读取这个文件,并将这个值存储在variables中。 像var mailContent = fs.readFile([filepath])一样。 然后使用JavaScriptreplace函数replace#name与实际名称。 像mailContent.replace('#name','abcd')

是的,您可以使用键值对维护JSON结构。

template.json

{

“主题”:“确认邮件”,

“正文”:在HTML之上

}

然后你可以阅读需要这个JSON或将其作为parameter passing给你的函数。

var template = require('./ templates.json);

var mail = {

 from: "######################", to: params.email, subject:template.Subject, text: "", html: template.Body 

}