Обработка ошибок Nodemailer (Node.js) не работает должным образом. Электронная почта все еще отправляется, хотя ** поле ввода имени ** пусто - PullRequest
0 голосов
/ 08 мая 2020

Во внешнем интерфейсе (React) я могу обрабатывать ошибки, однако я хочу реализовать обработку ошибок и во внутреннем интерфейсе (Node.js). Я думал, что смогу сделать это на transporter.sendMail , но это не работает. Он по-прежнему отправляет электронное письмо через Nodemailer , когда поле ввода имени пусто . Что я пропустил?

const express = require('express');
const bodyParser = require('body-parser');
const nodemailer = require('nodemailer');
const cors = require('cors');
const creds = require('./config');

const app = express();
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: false }));
app.use(cors());

app.post('/api/contact', (req, res) => {
    const htmlEmail = `
            Name: ${req.body.name}
            Phone: ${req.body.phone}
            Email: ${req.body.email}
        `;

    const mailOptions = {
        from: req.body.name,
        to: 'MYEMAIL',
        subject: 'example message subject',
        html: htmlEmail,
    };

    const transporter = nodemailer.createTransport({
        host: 'smtp.ethereal.email',
        port: 587,
        auth: {
            user: 'MYEMAIL',
            pass: 'MYPASSWORD',
        },
    });

    transporter.sendMail(mailOptions, (err, data) => {
        if (err || req.body.name.length === 0) {
            res.json({
                status: 'fail',
            });
            console.log('Message could not be sent.');
            return null;
        } else {
            res.json({
                status: 'success',
            });
            console.log('Message sent.');
        }
    });
});

const PORT = process.env.PORT || 3001;

app.listen(PORT, () => {
    console.log(`Server listening on port ${PORT}`);
});

1 Ответ

0 голосов
/ 08 мая 2020

Вы можете сначала проверить req.body перед выполнением какой-либо операции. Так же, как следующее.

app.post('/api/contact', (req, res) => {
    if(req.body.name.trim().length === 0) {
        return res.status(400).json({error: "Name is required"});
    }
    .........
...