req.body.name не определено - Nodemailer ejs - PullRequest
0 голосов
/ 15 марта 2020

Я видел некоторые проблемы, которые близки к моей, но не совсем одинаковые, поэтому моя проблема в том, что я получил шаблон js с атрибутом Form и хочу отправить вход по почте, поэтому я объявляю все входные данные с именем = "xyz" и внутри router.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 не определено, но если я регистрирую один атрибут, он показывает мне правильное значение из входных данных. Где ошибка?

1 Ответ

1 голос
/ 15 марта 2020

Это потому, что вы должны импортировать промежуточное ПО json следующим образом:

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

Тогда ваш сервер express десериализует JSON тел при получении запросов с заголовком Content-Type: application/json, а ваш код будет работать правильно.

...