Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/409.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript/Node.js导入html文件并向html文件传递参数_Javascript_Html_Node.js_Nodemailer - Fatal编程技术网

Javascript/Node.js导入html文件并向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

我正在制作一个node.js服务器,可以按需发送电子邮件。我正在导入一个html文件,并将其分配给“输出”。然后通过电子邮件发送给接收者

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>