寻找对我遇到的错误的一些见解。
在 Transporter.sendmail(func(err, info){}) 上, err 变量返回以下内容:
{ [Error: getaddrinfo ENOTFOUND smtp.gmail.com]
code: 'ENOTFOUND',
errno: 'ENOTFOUND',
syscall: 'getaddrinfo',
hostname: 'smtp.gmail.com' }
我在他们的网站或github上没有看到nodemailer的任何错误文档,并且我在Google搜索上没有找到任何有用的东西。我看到的最接近的是this SO post。我试图通过 cron 作业每周发送大约 50 封电子邮件。
我已经尝试过使用和不使用nodemailer-smtp-pool包,我的传输器目前看起来像这样:
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 表示应用程序无法解析 DNS A 记录 smtp.gmail.com。可能是你的 DNS 服务器有问题。这是 由 Node 而不是 Nodemailer 处理,Nodemailer 无法处理 如果主机名未解析,则执行此操作。如果这种情况随机发生,那么你 可以编辑您的应用程序以便稍后重试。
而且 Nodemailer 似乎不支持代理,或者从未计划支持。对我来说似乎是一条死胡同。
我的nodemailer设置也遇到了同样的错误,我通过更改gmail密码以不包含任何特殊字符来修复它。
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
}));
试试这个,应该可以正常工作。