smtp - 通过 nodemailer 发送电子邮件时出现 550 错误
问题描述
我第一次尝试将 nodemailer 用于联系表格,并且我花了很长时间才能让它工作。似乎无论我做什么,我都会收到以下错误:
Error: Mail command failed: 550-Requested action not taken: mailbox unavailable
550 Sender address is not allowed.
通过搜索互联网,这似乎与我想要接收拒绝电子邮件的消息的帐户有关。问题是我正在努力寻找一个明确的解决方案来正确处理这个问题,或者如何确定这确实是问题所在。
我的一般假设是有一些东西,或者一些东西,我只是不知道,因为我一般是 nodemailer 和 smtp 的菜鸟。我在下面包含了所有相关的代码片段,在此先感谢您提供任何有用的提示。个人信息已在以下代码(凭据数据和 mail.to)中删除。
react组件中的前端提交功能:
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.');
}
})
};
后端路由和 nodemailer 代码:
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'
}
解决方案
所以,似乎这一切都围绕着我使用的发件人电子邮件以及 smtp 地址的一些奇怪之处。
这有点奇怪,但值得一提的是:mail.com 允许您创建一个具有自定义域的免费电子邮件帐户。所以在这种情况下,我有类似的东西:“myName@mindless.com”的 smtp 为“smtp.mail.com”,这根本行不通。我创建了第二个 gmail 帐户,启用了不太安全的应用程序,更新了 creds 信息和 smtp 地址,现在它运行良好。
推荐阅读
- python - Python:如何在 2 个 for 循环中交换 2 个迭代器的值?
- java - 使用 Postgres 获取“重复键值违反唯一约束”
- javascript - 在 mvc 视图中自动刷新不是局部视图而是主视图
- r - 在 R 中将双数和作为函数编写
- three.js - THREE.js 使用 GSAP 更新 TorusGeometry
- php - 如何在 update 和 destroy 方法而不是 id 中接收对象本身?
- asp.net-core - github 中的 asp.net 核心 appsettings.json
- react-native - React Native Video 未加载本地文件
- git - 通过 Wheel 文件缓存远程存储库
- perl - Mojolicious:传递选择字段 HTML 片段