Ошибка 550 при отправке электронной почты через нодмейлер - PullRequest
0 голосов
/ 07 апреля 2020

Я пытаюсь использовать nodemailer в первый раз для формы контакта, и мне тяжело, чтобы это сработало. Кажется, что независимо от того, что я делаю, я получаю следующую ошибку:

Error: Mail command failed: 550-Requested action not taken: mailbox unavailable
550 Sender address is not allowed.

Из очистки inte rnet, кажется, это как-то связано с учетной записью, где я хочу получить сообщение, отклоняющее электронное письмо. Проблема в том, что я изо всех сил пытаюсь найти четкое решение, как правильно с этим справиться или как быть уверенным, что это действительно проблема.

Мое общее предположение состоит в том, что есть что-то или несколько вещей, о которых я просто не подозреваю, так как я в некотором роде новичок для nodemailer и smtp в целом. Я включаю все соответствующие фрагменты кода ниже, заранее благодарю за любые полезные советы по этому. Личная информация была удалена в следующем коде (creds data и mail.to).

Функция отправки внешнего интерфейса в компоненте реакции:

handleSubmit = (event) => {
    event.preventDefault();

    const name = this.state.name;
    const email = this.state.email;
    const message = this.state.message;

    axios({
        method: 'POST',
        url: 'http://localhost:4000/send',
        data: {
            name: name,
            email: email,
            message: message
        }
    }).then((response) => {
        if (response.data.msg === 'success') {
            alert('Message sent');
            this.resetForm();
        } else if (response.data.msg === 'fail') {
            alert('Message failed to send.');
        }
    })
  };

Маршрутные маршруты и код узла_почты:

const express = require('express');
const router = express.Router();
const nodemailer = require('nodemailer');
const cors = require('cors');
const creds = require('./config');

const transport = {
    host: 'smtp.mail.com',
    port: 587,
    auth: {
        user: creds.USER,
        pass: creds.PASS
    }
}

const transporter = nodemailer.createTransport(transport);

transporter.verify((error, success) => {
    if (error) {
        console.log(error);
    } else {    
        console.log('Server is ready for messages');
    }
});

router.post('/send', (request, response, next) => {
    const name = request.body.name;
    const email = request.body.email;
    const message = request.body.message;
    const content = `name: ${name} \n email: ${email} \n message: ${message}`;

    const mail = {
        from: name,
        to: 'MY GMAIL ACCOUNT WHERE I WANT TO RECIEVE THE MESSAGE',
        subject: 'New message from tyleranyan.com',
        text: content
    };

    transporter.sendMail(mail, (error, data) => {
        if (error) {
            response.json({
                msg: 'fail'
            });
            console.log(error);
        } else {
            response.json({
                msg: 'success'
            });
        }
    });
});

const app = express();
app.use(cors());
app.use(express.json());
app.use('/', router);
app.listen(4000);

Файл конфигурации для кредитов:

module.exports = {
    USER: 'THE EMAIL THAT IS SENDING THE MESSAGE, IN THIS CASE A MAIL.COM EMAIL ADDRESS', 
    PASS: 'PASSWORD FOR SENDER EMAIL'
}

1 Ответ

0 голосов
/ 09 апреля 2020

Итак, похоже, все это было связано с тем, какое письмо я использовал, и какой-то странностью с адресом smtp.

Это довольно странно, но стоит того: mail.com позволяет создать бесплатную учетную запись электронной почты с настроенным доменом. Так что в этом случае у меня было что-то вроде: «myName@mindless.com» с smtp «smtp.mail.com», и это просто не работало. Я создал вторую учетную запись Gmail, включил менее безопасные приложения, обновил информацию о кредитах и ​​адрес SMTP, и теперь он прекрасно работает.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...