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

Javascript 如何从NodeJS中的另一个文件读取HTML(用于电子邮件正文),javascript,node.js,html-email,Javascript,Node.js,Html Email,我对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>

我对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>
你好Sujit

谢谢你来找我们

我们已收到您的请求,我们的主管将很快与您联系

多谢各位

以下是发送电子邮件的代码:

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();
});
var-mailer=require(“nodemailer”);
var emailBody=“”;
//使用Smtp协议发送电子邮件
var smtpTransport=mailer.createTransport(“SMTP”{
服务:“#######”,
认证:{
用户:“########”,
通过:“#######”
}
});
var邮件={
摘自:“###################”,
致:params.email,
主题:“欢迎用户。”,
正文:“,
html:emailBody
}
smtpTransport.sendMail(邮件,函数(错误,响应){
如果(错误){
日志(“邮件错误:>>”;
console.log(错误);
}否则{
console.log(“发送的消息:+response.Message”);
}
smtpTransport.close();
});
目前,我使用nodeEmailer发送这封邮件,邮件的HTML正文在同一个文件app.js中定义。到目前为止,它运转良好。 但是,有没有办法用变量/占位符来分隔HTML,并将其放在其他文件中,以便直接管理正文内容?我可以通过某种方式将正文内容加载到变量
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')

是!!创建一个名为“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

{

“主题”:“确认邮件”

“Body”:在HTML之上

}

然后您可以读取这个JSON,或者将它作为参数传递给您的函数

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

var邮件={

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

}

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

template.json

{

“主题”:“确认邮件”

“Body”:在HTML之上

}

然后您可以读取这个JSON,或者将它作为参数传递给您的函数

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

var邮件={

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

}

Node有许多模块可用于模板制作。Node有许多模块可用于模板制作。我认为这不是一个好方法。如果HTML保存在单独的文件中,UI人员可以很容易地在其中进行更改,因为它将是一个格式相当的HTML。是的,当然,这与要求不同。当需要动态配置多个模板时,这种方法会有所帮助。有了这个,你可以在JSON中配置所有模板和主题,HTML和主题的映射可以在同一个地方进行配置。如果HTML保存在单独的文件中,UI人员可以很容易地在其中进行更改,因为它将是一个格式相当的HTML。是的,当然,这与要求不同。当需要动态配置多个模板时,这种方法会有所帮助。有了它,您可以在JSON中配置所有模板和主题,其中HTML和主题的映射可以在同一个位置进行配置。对于更大的应用程序和更大的HTML电子邮件,使用NodeEmailer的模板将非常有用,但对于如此小的用途,此解决方案是可行的。谢谢对于更大的应用程序和更大的HTML电子邮件,使用NoEmailer的模板将非常有用,但对于如此小的用途,此解决方案将起作用。谢谢