当我试图使用nodemailer发送电子邮件时,我得到了代码'ETIMEDOUT'的连接超时错误,但是当我在笔记本上尝试使用相同的电子邮件帐户和密码时,没有错误。
这是文件“mail.js”:
const nodemailer = require('nodemailer');
const user = process.env.EMAIL;
const pass = process.env.EMAIL_PASS;
const transporter = nodemailer.createTransport({
service: 'kinghost',
host: 'smtp.kinghost.net',
port: 587,
secure: false,
pool: true,
auth: { user, pass }
});
module.exports = {
sendMail(to, subject, html) {
const mailOptions = {
from: user,
to,
subject,
html
};
console.log(user)
transporter.sendMail(mailOptions, (err, info) => {
if (err) {
console.log(err)
};
console.log(`Mail to ${mail} has been sended`);
});
}
};发布于 2019-11-28 12:47:28
这可能是因为在生产网站上,您所在的服务器拥有与您自己不同的IP,而且您的电子邮件服务可能正在运行某种过滤,因为它认为这可能是意外行为。
您可能应该研究验证电子邮件客户端的其他安全方法,或者可能查看是否可以注册生产服务器的IP (效率较低)。
发布于 2021-12-21 01:51:38
嘿程序员朋友.
我也经历过同样的情况。确保您检查您的电子邮件提供商的仪表板的一个选项,称为"SMTP国际“。
快速修复:更改配置
nodemailer.createTransport({主机:**"smtpi.kinghost.net"**,// smtp国际安全: true,// force端口465端口: 465,//默认端口auth:{ user: process.env.EMAIL,//email pass: process.env.EMAIL_PASS,//pass });
您的ECS或EC2容器必须在不同的源上运行,因此,请激活提供商中的国际电子邮件,并使用该邮件来解决此问题。
您的ECS或EC2容器必须在不同的源上运行,因此,请激活提供商中的国际电子邮件,并使用该邮件来解决此问题。
对于我的申请来说,这起作用了。
https://stackoverflow.com/questions/59088687
复制相似问题