NodeMailer:获取地址信息错误

8

我正在寻找一些关于我遇到的错误的见解。

在执行"transporter.sendmail(func(err, info){})"时,err变量返回以下内容:

{ [Error: getaddrinfo ENOTFOUND smtp.gmail.com]
  code: 'ENOTFOUND',
  errno: 'ENOTFOUND',
  syscall: 'getaddrinfo',
  hostname: 'smtp.gmail.com' }

我在nodemailer的网站和github上都没有看到任何关于错误文档的信息,而且我在谷歌搜索中也没有找到任何有用的内容。最接近的是这篇stackoverflow的帖子。我正在尝试通过cron job每周发送大约50封电子邮件。

我已经尝试过使用和不使用nodemailer-smtp-pool包,我的transporter目前看起来像这样:

var transporter = nodemailer.createTransport(smtpPool({
  service: 'gmail',
  auth: {
    user: 'xxx@gmail.com',
    pass: 'xxx'
  },
  maxConnections: 5,
  maxMessages: 200
}));

我目前还没有使用XOATH,因为我认为我不需要。我已经为我正在使用的Gmail帐户删除了DisplayUnlockCaptcha,但我不认为这与此有关。值得一提的是,我在这个应用程序中使用了MEAN堆栈。

当nodemailer进行getaddrinfo调用时,似乎找不到“smtp.gmail.com”,但我无法理解原因。

任何见解都将不胜感激

编辑:

来自nodemailer开发人员:

ENOTFOUND意味着应用程序无法解析smtp.gmail.com的DNS A记录。可能是您的DNS服务器出了问题。这由Node处理,而不是由Nodemailer处理,如果主机名未解析,则Nodemailer无法执行任何操作。如果这种情况随机发生,则可以编辑应用程序以稍后再试。

看起来nodemailer不支持代理,也没有计划支持。对我来说看起来像是死路一条。


1
你尝试过使用“secure: true”吗?或者考虑使用host: smtp.gmail.com和port: 465代替service选项? - Prasad Silva
我使用465端口,并在Gmail安全设置中允许和解锁应用程序访问,使其正常工作。 - james-see
2个回答

0
var transporter = nodemailer.createTransport(smtpPool({
  service: 'gmail',
  secure: false, // true for 465, false for other ports
  auth: {
    user: 'xxx@gmail.com',
    pass: 'xxx'
  },
  maxConnections: 5,
  maxMessages: 200
}));

试试这个,应该可以正常工作。


0

我在nodemailer设置中遇到了同样的错误,通过将gmail密码更改为不包含任何特殊字符来解决了这个问题。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接