使用Nodemailer在Node.js中发邮件报getaddrinfo ENOTFOUND错如何解决
Nodemailer 发送邮件报错解决方法
根因说明
报错getaddrinfo ENOTFOUND https://example.com的核心原因是配置host字段时错误添加了https://协议前缀:
Nodemailer 建立SMTP连接时不需要HTTP/HTTPS协议前缀,DNS解析会直接把整个带前缀的字符串当作域名查询,自然无法找到对应解析记录。
修复步骤
- 第一步:调整
host配置,删除协议前缀,填写邮箱服务商提供的纯SMTP服务器域名(通常自有域名邮箱的SMTP地址为smtp.example.com,请以你的邮箱服务官方给出的地址为准),修改后的配置示例如下:
const transporter = nodemailer.createTransport({ host: 'smtp.example.com', // 仅填写SMTP服务器纯域名,不要带协议前缀 port: 465, // Port secure: true, // this is true as port is 465 auth: { user: 'noreply@example.com', pass: 'mypassword' } });
- 第二步:配置修改后可以通过以下代码验证SMTP连接是否正常:
transporter.verify(function(error, success) { if (error) { console.log('SMTP连接失败:', error); } else { console.log('SMTP连接正常,可正常发送邮件'); } });
- 若验证仍失败,再排查两个常见问题:
- 确认填写的SMTP域名、端口、账号密码和邮箱服务商官方给出的配置完全一致
- 确认运行代码的服务器网络没有被防火墙、安全组拦截对SMTP服务器465端口的访问请求
内容的提问来源于stack exchange,提问作者Karthik
相关产品推荐
相关产品推荐

