req.body.name 未定义 - Nodemailer ejs

req.body.name is not defined - Nodemailer ejs

我看到了一些与我的很接近但不完全相同的问题,所以我的问题是我有一个带有 Form 属性的 ejs 模板,我想将输入发送到邮件,所以我用 name= 声明所有输入"xyz" 和 routes.get 内:req.body.conSurname, conName: req.body.conName,。所以我的 post 路线看起来像这样。

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 is not defined 但如果我记录一个属性,它会显示输入的正确值。 哪里出错了?

那是因为你必须像这样导入 json 中间件:

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

然后您的快速服务器将在接收到 Content-Type: application/json header 请求时反序列化 JSON 主体,并且您的代码将正常工作。