req.body.name is not defined - Nodemailer ejs



我看到了一些与我相似但不完全相同的问题,所以我的问题是我得到了一个带有Form属性的ejs模板,我想将输入发送到邮件中,所以我用name="xyz"声明所有输入,并在routes.get:req.body.conSurname, conName: req.body.conName,中声明。所以我的邮寄路线是这样的。

router.post('/contact/send', (req, res) => {
// Nodemailer
let transporter = nodemailer.createTransport({
service: 'gmail',
auth: {
user: 'abc@gmail.com',
pass: '******'
}
});
const mailOptions = {
from: 'abc@gmail.com', 
to: 'def@gmx.de', 
subject: 'New Mail', 
html: '<h2>Mail from: '+ req.body.conSurname + ' ' + conName + '</h2>'
};
transporter.sendMail(mailOptions, function (err, info) {
if (err)
console.log(err)
else
console.log(info);
});
res.redirect('/contact');
})

如果我发送公式,它会抛出ReferenceError:conSurname没有定义,但如果我记录一个属性,它会显示输入的正确值。错误在哪里?

这是因为您必须导入如下json中间件:

var express = require('express');
var app = express();
app.use(express.json());

然后,当接收到带有Content-Type: application/json标头的请求时,您的express服务器将反序列化JSON主体,您的代码将正常工作。

最新更新