【问题标题】:Nodemailer Sending Email Getting Failed - GmailNodemailer 发送电子邮件失败 - Gmail
【发布时间】:2020-09-24 01:42:05
【问题描述】:

我们使用Nodemailer 从我们的服务器自动发送电子邮件。我们正在使用 gmail 帐户发送电子邮件。它工作正常,直到昨天晚上。现在我们遇到了一些错误,例如

{ Error: queryA EREFUSED smtp.gmail.com at QueryReqWrap.onresolve [as oncomplete] (dns.js:206:19) errno: 'EREFUSED', code: 'EDNS', syscall: 'queryA', hostname: 'smtp.gmail.com', command: 'CONN' }

我也尝试使用其他一些 gmail 帐户,它返回相同的错误。这是我们使用的代码

var smtpTransport = nodemailer.createTransport({
                    service: 'gmail',
                    port: 465,
                    secure: true,
                    auth: {
                        user: 'xxx@gmail.com',
                        pass: 'xxxxxxxx'
                    }
                });

即使我尝试过类似的代码

var smtpTransport = nodemailer.createTransport({
                    host: 'smtp.gmail.com',
                    auth: {
                        user: EmailPath["Email_UserName"],
                        pass: EmailPath["Email_Password"]
                    }

                });

【问题讨论】:

  • 通常不建议将 Gmail 用作此类用例的 SMTP 提供程序。 Nodemailer 建议不要这样做,因为谷歌“为每次登录尝试运行大量启发式算法,并阻止任何看起来可疑的内容以保护用户免受帐户劫持尝试。例如,如果您的服务器位于另一个地理位置,您可能会遇到麻烦 –在您的开发机器上一切正常,但消息在生产中被阻止。" (source)。
  • 知道您在此处提供的上下文很可能 Gmail 现在正在阻止您的计算机;这可能是 Google 支持团队比其他任何人都更有可能解决的问题。
  • 还有其他电子邮件服务提供商。例如,sendgrid.com 有一个免费层,他们做得很好。

标签: node.js mongodb nodemailer


【解决方案1】:

正如@esqew 提到的,不建议在Nodemailer 中使用Gmail。 Google 不允许安全性较低的应用登录您的帐户,但在大多数情况下,即使启用“允许安全性较低的应用”选项也无法解决此问题。

对此有一个解决方法,解决方案是使用app passwords,但要小心,因为任何知道您的应用密码的人都可以登录您的 Gmail 帐户。

如果您想为自己设置一个,只需按照上面链接中提供的步骤进行操作,但您需要启用两因素身份验证。让我知道这是否有效。

【讨论】:

  • 嗯,这很奇怪,因为应用密码对我有用,您是否打开了两因素身份验证?
猜你喜欢
  • 2017-02-09
  • 2022-07-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-10-30
相关资源
最近更新 更多