You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Nodemailer调用API发信时出现queryA EREFUSED错误如何解决?

你的现有实现代码存在语法错误,service: 'gmail'后缺少逗号,会直接触发语法报错,先补全逗号后再进行后续排查。

问题原因

你遇到的Error: queryA EREFUSED smtp.gmail.com报错属于网络层DNS解析故障,和Nodemailer逻辑无关,触发原因是你使用的LAN有线网络无法正常解析Gmail的SMTP域名:

  • LAN环境配置的内网DNS服务器屏蔽了smtp.gmail.com域名的解析请求
  • LAN网络出口防火墙封禁了Gmail服务对应的IP段或SMTP协议的587/465端口
  • 本地设备的DNS缓存存在污染,指向了无效的解析记录

解决方案

1. 修改本地DNS配置

将本地有线网络的DNS服务器替换为公共DNS,可选公共DNS包括114.114.114.114、8.8.8.8,修改完成后刷新DNS缓存重试:

  • Windows系统刷新缓存命令:ipconfig /flushdns
  • Linux/macOS系统刷新缓存命令可根据发行版选择,常见为sudo systemd-resolve --flush-caches

2. Nodemailer配置强制指定DNS

如果不方便修改全局网络配置,可以直接在代码中手动指定DNS服务器,示例如下:

const dns = require('dns');
// 手动指定公共DNS服务器优先解析
dns.setServers(['8.8.8.8', '8.8.4.4']);

this.transporter = nodemailer.createTransport({
  service: 'gmail',
  auth: {
    user: 'mygmail@gmail.com',
    pass: 'mypass',
  },
  // 测试阶段可添加该配置跳过内网可能的证书拦截,生产环境建议删除
  tls: {
    rejectUnauthorized: false
  }
})

3. 内网限制适配

如果是企业/单位内部LAN主动限制了谷歌服务访问,可联系网络管理员开通smtp.gmail.com对应端口的访问权限,或者更换为内网允许访问的其他邮件服务商SMTP服务。

内容的提问来源于stack exchange,提问作者zflexz

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 21:15:03