SMTPAuthenticationError 5.7.14 请通过您的网络浏览器 log\n5.7.14

SMTPAuthenticationError 5.7.14 Please log\n5.7.14 in via your web browser

我有一个脚本可以定期向收件人列表发送报告。一切正常,直到今天凌晨 4 点,当我检查收件箱时没有收到报告。

通过调试代码:

import smtplib
username="my.user.account@gmail.com"
password="my.correct.password"

server=smtplib.SMTP('smtp.gmail.com',587)
server.ehlo()
server.starttls() 
server.ehlo()
server.login(username,password)

#if login worked, it should send a message, but it is not working, so I will suppress this part

server.quit()

我收到以下(已知的)结果:

(250, b'smtp.gmail.com at your service, [SERVERIP]\nSIZE 35882577\n8BITMIME\nSTARTTLS\nENHANCEDSTATUSCODES\nPIPELINING\nCHUNKING\nSMTPUTF8') (220, b'2.0.0 Ready to start TLS') (250, b'smtp.gmail.com at your service, [SERVERIP]\nSIZE 35882577\n8BITMIME\nAUTH LOGIN PLAIN XOAUTH2 PLAIN-CLIENTTOKEN OAUTHBEARER XOAUTH\nENHANCEDSTATUSCODES\nPIPELINING\nCHUNKING\nSMTPUTF8') Traceback (most recent call last): File "<pyshell#52>", line 6, in server.login(username,password) File "C:\Python\Python36\lib\smtplib.py", line 729, in login raise last_exception File "C:\Python\Python36\lib\smtplib.py", line 720, in login initial_response_ok=initial_response_ok) File "C:\Python\Python36\lib\smtplib.py", line 641, in auth raise SMTPAuthenticationError(code, resp) smtplib.SMTPAuthenticationError: (534, b'5.7.14 <https://accounts.google.com/signin/continue?sarp=1&scc=1&plt=AKgnsbu5\n5.7.14 wJL_YP3XLTGPzP_UBwtyCHhzHE1y1G8R0iHaz_pxG9fBH4CePmbXuAE1qH8HvnXTgqcmKi\n5.7.14 P23_lJoZX_pfbNUOxQp4Fr2VhgbAjnlu3ZL_pcjVBd-TTMUVCAah6Q2-Vq5Dffm9s4UWwl\n5.7.14 J7V7CjE06eHkw1IlphV4lLbRKVp9Hk7vC92zLQ5zM27cbQiTM8W3lEgm> Please log\n5.7.14 in via your web browser and then try again.\n5.7.14 Learn more at\n5.7.14 https://support.google.com/mail/answer/78754 r131sm2964505vkr.40 - gsmtp')

我尝试过的事情

允许安全性较低的应用程序(如 https://www.google.com/settings/security/lesssecureapps 中所示):自从我创建帐户以来,此标志已设置为 true。

禁用验证码(如https://accounts.google.com/DisplayUnlockCaptcha中所示):多次访问此URL。运气不好。

通过浏览器登录:从任何计算机通过任何互联网浏览器登录时,它工作正常,尽管在第一次我不得不插入发送到帐户恢复的代码phone.

我遇到了其他我可以尝试的事情,但我不确定它是否有效:

我可能会尝试 oauth2,但是它需要更改我的代码,由于服务器中的某些限制,我想避免这种情况。

我已经使用 Google Gmail API 解决了这个问题。似乎 Google 阻止或限制了通过未知设备登录我的帐户,因为我只能通过浏览器登录,并且在我确认电话号码和短信发送的代码后。

所以我决定放弃使用 smtplib 并使用 Gmail 的 API Google 实现访问: https://developers.google.com/api-client-library/python/ https://developers.google.com/gmail/api/guides/sending

希望这对遇到此问题的其他人有所帮助。

我也有这个问题。我的邮件转发器脚本已经正常工作了 6 个月以上,随机开始抛出此错误:

534, b'5.7.14 <https://accounts.google.com/signin/continue?sarp=1&scc=1&plt=AKgnsbts\n5.7.14 y2ku2-8KrWsn_dAUhnkssuTuESwaeG-DNn9hWBpsSpJCmVL ZhH24jzJfd-5bHUdh993dJ7\n5.7.14 a5LsAOJrheyT0cRXIhMSbycqvMAC7sNrizO5qU_6iDescJcQa-QqUUCFVH7IZoWF9uXyrv\n5.7.14 HC9XzAW-pBwgUjV4i_ts8CNhB_yZf2JHOi-wl6gZ9jwAiYLWx DPe7epI> Please log\n5.7.14 in via your web browser and then try again.\n5.7.14 Learn more at\n5.7.14 https://support.google.com/mail/answer/78754 y5sm3059043 9pge.49 - gsmtp

经过一些研究,我尝试了以下所有步骤:

  • 正在检查 Google 设置中是否允许低安全应用程序(它已经打开,尝试将其关闭并重新打开)
  • 正在尝试解锁验证码link:https://accounts.google.com/DisplayUnlockCaptcha
  • 手动唱进唱出Google账号(用phone号码验证)
  • 更改帐户密码
  • 启用和禁用 2FA
  • 无数其他事情...

一开始似乎没有任何实际效果。然而,在完成上述所有步骤后,脚本在约 24 小时后再次开始工作,没有任何修改。

我最近遇到了这个问题。我已经使用同一个脚本 3 年多了,但它突然停止工作了。上述解决方案对我不起作用。在联系 google 之后,问题得到了解决(请注意,更改可能需要几个小时才能传播 - 最多 24 小时,但通常不会那么长)

  • 允许 Google 设置中的低安全应用程序(对自己没有影响,但可能与完整解决方案有关)

  • 尝试解锁验证码link:https://accounts.google.com/DisplayUnlockCaptcha(本身没有效果,但可能与完整解决方案有关)

  • 管理控制台 > 应用 > G Suite > Gmail > 用户设置 > 机密模式 --> 禁用 机密模式

  • 管理控制台 > 应用 > G Suite > Gmail > 最终用户访问 --> 开启 "Allow per-user outbound gateways"

尝试更改电子邮件的密码并使用新密码重新运行脚本。这对我有用。您可能已经收到一封登录尝试电子邮件,并确保您验证了您的脚本所做的登录。

只需点击“是的,是我干的”,然后关闭“不太安全的应用访问”。

即使我有这个问题也只是尝试执行这些步骤,因为 google 最初会无缘无故地阻止连接:

  1. 尝试打开和关闭不太安全的应用程序访问。

  2. 注销您的帐户并重新登录

  3. 更改密码并点击脚本 最后打印确认如下:

      print('Your message has been sent!!')
    

如果这不起作用,请在 24 小时后登录,这一定会起作用!!

如果您在同一台设备上登录了多个帐户,则必须退出所有帐户并将此 https://accounts.google.com/b/0/DisplayUnlockCaptcha 复制并粘贴到您的 url 中。您将被定向到您的 gmail 登录 page.Choose 您在脚本中使用的帐户,输入您的用户名和密码。 link 会将您定向到验证码页面并单击继续。确保在解锁验证码和 运行 脚本后不要关闭选项卡。如果这是第一次使用,您不必总是解锁验证码。

这个问题的解决方案似乎是:

这样做应该会解锁帐户,但最多可能需要一个小时才能生效。

就我而言,我使用的是通过 SSH 访问的云服务器中的帐户。我必须创建一个 SSH 隧道才能从我的本地浏览器访问相应的 Google URL,就像我从 SSH 终端访问它一样:

  1. 创建 SSH 隧道:ssh -D 9090 -C -N user@server-url
  2. 进入 Firefox 的设置,搜索 proxy 选项,然后将 SOCK 服务器 设置为 127.0.0.1端口9090:

  1. 现在您可以检查您当前的 IP 是否与 myip.com 中的远程服务器相同。
  2. 现在访问 Google URL 以使用电子邮件帐户登录。
  3. 就我而言,也有必要访问 https://www.google.com/accounts/DisplayUnlockCaptcha

如果您在同一台设备上登录了多个帐户,则无需退出帐户即可执行这些步骤。

你需要做的就是打开一个私人window,粘贴以下内容URL:https://accounts.google.com/b/0/DisplayUnlockCaptcha 进入您浏览器的私有 window。您将被重定向到您的 Gmail 登录页面。将您的帐户电子邮件放在给定字段中,然后按下一步并输入密码。 link 会将您定向到验证码页面并单击继续。确保在解锁验证码和 运行 脚本后不要关闭选项卡。如果这是第一次使用,您不必总是解锁验证码。