Я пытаюсь использовать 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'
}