Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sql-server-2005/2.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
Json NodeEmailer中未定义req.body_Json_Undefined_Nodemailer_Body Parser_Req - Fatal编程技术网

Json NodeEmailer中未定义req.body

Json NodeEmailer中未定义req.body,json,undefined,nodemailer,body-parser,req,Json,Undefined,Nodemailer,Body Parser,Req,我对nodeEmailer中未定义req.body有一个问题 const express = require("express"); const bodyParser = require("body-parser"); const app = express(); app.use(bodyParser.urlencoded({ extended: false })); app.use(bodyParser.json()); const emailRoute

我对nodeEmailer中未定义req.body有一个问题

const express = require("express");
const bodyParser = require("body-parser");
const app = express();
app.use(bodyParser.urlencoded({ extended: false }));
app.use(bodyParser.json());
const emailRoute = require("./routes/api/emailRoute");
app.use("/email", emailRoute);
反应:我已经编写了整个函数,并且所有数据都正确传递。log(数据)为我提供了正确的对象

 axios
  .post(`${this.state.API_URL}/email/send`, JSON.stringify(data))
  .then((response) => {
  });
快报:这只是NodeEmailer的重要部分

const express = require("express");
const bodyParser = require("body-parser");
const app = express();
app.use(bodyParser.urlencoded({ extended: false }));
app.use(bodyParser.json());
const emailRoute = require("./routes/api/emailRoute");
app.use("/email", emailRoute);
电邮路线:

 router.post("/send", async (req, res) => {
  const EmailAddress = process.env.EMAIL_ADDRESS;
  const transporter = nodemailer.createTransport({
    service: "hotmail",
    auth: {
      user: EmailAddress,
      pass: process.env.EMAIL_PASS,
    },
  });

  await transporter.sendMail(
    {
      from: req.body.email,
      to: EmailAddress,
      subject: "Email from app",
      text: `name: ${req.body.name} 
      current-role: ${req.body.role} 
      sports-car: ${req.body.enthusiast} 
      comment: ${req.body.comment}`,
    },
    (err, data) => {
      if (err) {
        res.sendStatus(503).json(err);
      } else {
        res.sendStatus(200).json("email sent");
      }
    }
  );
});
我正在将电子邮件发送到我的电子邮件帐户,但这是我得到的

from [unknown]
      name: undefined
      current-role: undefined
      sports-car: undefined
      comment: undefined
我做错了什么


谢谢。

您必须在每个路由器中使用Body解析器! 所以,如果您没有将其添加到电子邮件路由,请添加它!
尽管如此,我终于让它工作了。因此,没有JSON.stringify(数据),只有axios中的数据

 axios
.post(`${this.state.API_URL}/email/send`, data)
.then((response) => {
});
在电子邮件的路线上

  const EmailAddress = process.env.EMAIL_ADDRESS;
 const transporter = nodemailer.createTransport({
service: "hotmail",
auth: {
  user: EmailAddress,
  pass: process.env.EMAIL_PASS,
},
});


 await transporter.sendMail(
{
  from: EmailAddress,
  to: EmailAddress,
  subject: "Email from app",
  text: 
 `name: ${req.body.name} 
  email: ${req.body.email}
  current-role: ${req.body.role} 
  sports-car: ${req.body.enthusiast} 
  comment: ${req.body.comment}`,
 }

“用户”和“发件人”的电子邮件地址应相同。我想我可以用发件人的电子邮件来表示我从React中的表单中得到的“发件人”,但我想不行。就我的情况而言,我从我的同一个电子邮件帐户发送和接收电子邮件,我只是在“文本”中传递发件人的电子邮件地址。

导入所有内容后,结果仍然相同。这就是你的意思,还是我必须将主体解析器作为参数传递?到路由器。邮局?const express=要求(“express”);const bodyParser=require(“body parser”);常量app=express();use(bodyParser.urlencoded({extended:false}));use(bodyParser.json());const router=express.router();const nodemailer=require(“nodemailer”);require(“dotenv”).config();好的,首先,你可以指定你拥有的文件,你不必指定,但作为一个参数,这会导致一个错误。对不起,英语不是我的语言。在这个问题上,我有一个react组件,我在其中调用axios,server.js,它有所有的后端和emailRoute,它有nodeEmailer。我在server.js和emailRoute.js中都导入了body解析器。您是否尝试过调试并查看服务器中从客户端接收到的参数?