Javascript/Node.js导入html文件并向html文件传递参数
我正在制作一个node.js服务器,可以按需发送电子邮件。我正在导入一个html文件,并将其分配给“输出”。然后通过电子邮件发送给接收者Javascript/Node.js导入html文件并向html文件传递参数,javascript,html,node.js,nodemailer,Javascript,Html,Node.js,Nodemailer,我正在制作一个node.js服务器,可以按需发送电子邮件。我正在导入一个html文件,并将其分配给“输出”。然后通过电子邮件发送给接收者 app.post("/send", (req, res) => { console.log("sending email..."); const token = req.body.data.token; const output = fs.readFileSync('emailcontent
app.post("/send", (req, res) => {
console.log("sending email...");
const token = req.body.data.token;
const output = fs.readFileSync('emailcontents.html').toString();
这很有效。但是,将“token”变量传递给emailcontents.html的最佳方式是什么?如果我误解了您的要求,请告诉我。我会尽力修改答案 根据评论中的对话,我们可以知道您希望向用户发送电子邮件,而不是使用
res.render
在浏览器中为用户呈现emailcontents.html
内容。该电子邮件应包含
标记
您希望将令牌
插入到emailcontents.html中,而不是追加
我们假设您的html内容如下所示
<h1>weclome here</h1>
<p> Please use this token to do something</p>.
然后使用replace方法替换{token}
app.post(“/send”,(请求、回复)=>{
日志(“发送电子邮件…”);
const token=req.body.data.token;
fs.readFile('emailcontents.html',(错误,数据)=>{
const output=data.toString().replace(“{token}”,token)
//做其他发送邮件的工作
})
注意:只有在html非常简单的情况下,才能使用replace
。
如果您的html是这样的,那么处理起来就更复杂了。
在这种情况下,我建议您使用第二种解决方案
weclome在这里
{token}:{token}
第二,使用模板引擎
您可以使用模板引擎传递参数,例如。
无论如何它都可以工作
<!-- emailcontents.ejs -->
<h1>this is emailcontents.html content</h1>
<h1>Please use this <%= token %> to do something</h1>
当你建立一个html文件可以抓取的端点时?@Alex你是什么意思?等等,我会回答,但我不确定这是否是导入html文件以及如何发送电子邮件的最佳方式?@SJ19我更新了我的答案,ejs在任何情况下都可以工作,除非你不想安装ejs包。评论不用于进一步讨论;这段对话已经结束。谢谢你的详细解释。我接受了你的回答。“注意:只有当你的html非常非常简单时,你才能使用replace。”非常非常非常简单是什么意思?@SJ19我的回答中有一个例子。你可以想象如果你的html是{token}:{token}
,但你想替换第二个{token}?也许您可以将带有+
的符号添加到{token}:+{token}
中,并使用replace(“+{token}”,token)
。但是,每次更改html时,您可能会更改replace(string,token)中的字符串
方法。这取决于你想要的html内容。你也可以想象如果你想替换多个{token}
。这就是为什么我说你可以简单地使用replace
方法,只有当你的html内容很简单,没有我提到的情况。这很公平。谢谢
<h1>weclome here</h1>
<p> Please use this token to do something</p>. {here}
<!-- emailcontents.ejs -->
<h1>this is emailcontents.html content</h1>
<h1>Please use this <%= token %> to do something</h1>