当我查看并审查了许多与此问题相关的问题时,我一直在努力寻找可以应用于我的案件的解决方案。我有一个脚本,可以定期将报告发送到收件人列表。直到今天凌晨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为您服务,[SERVERIP] \ nSIZE 35882577 \ n8BITMIME \ nSTARTTLS \ nEHANCEDSTATUSCODES \ nPIPELINING \ nCHUNKING \ nSMTPUTF8') (220,b'2.0.0准备启动TLS')(250,b'smtp.gmail.com 服务,[SERVERIP] \ nSIZE 35882577 \ n8BITMIME \ nAUTH LOGIN PLAIN XOAUTH2 普通客户代币持有人 XOAUTH \ nEHANCEDSTATUSCODES \ nPIPELINING \ nCHUNKING \ nSMTPUTF8') 追溯(最近一次通话):文件“”,第6行,在 server.login(用户名,密码)文件“ C:\ Python \ Python36 \ lib \ smtplib.py”,第729行,登录 在登录时引发last_exception文件“ C:\ Python \ Python36 \ lib \ smtplib.py”,第720行 auth中的文件“ C:\ Python \ Python36 \ lib \ smtplib.py”,第641行,initial_response_ok = initial_response_ok) 引发SMTPAuthenticationError(code,resp)smtplib.SMTPAuthenticationError:(534,b'5.7.14 请 通过网络浏览器登录\ n5.7.14,然后重试。\ n5.7.14了解 详情请见\ 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。没运气。 通过浏览器登录:在从任何计算机通过任何Internet浏览器登录时,它都可以正常工作,尽管在第一次时,我不得不插入发送到该帐户的辅助电话的代码。
我遇到了其他可以尝试的方法,但是我不确定它是否可以工作:
我可能会尝试使用oauth2,但是它需要更改我的代码,由于服务器的某些限制,我想避免这样做。真正令我惊讶的是,它工作正常,突然停止了!
任何帮助将不胜感激!
答案 0 :(得分:1)
我已经使用Google Gmail API解决了这个问题。 Google似乎已经阻止或限制了我通过未知设备登录我的帐户,因为我只能通过浏览器登录,并且在确认电话号码和SMS发送的代码后才能登录。
因此,我决定放弃使用smtplib,并使用Google用于Gmail的API实现了访问权限: https://developers.google.com/api-client-library/python/ https://developers.google.com/gmail/api/guides/sending
希望这可以帮助遇到此问题的其他人。
答案 1 :(得分:1)
解决方案似乎是:
这样做应该可以解锁帐户,但可能需要一个小时才能生效。
答案 2 :(得分:0)
我也遇到了这个问题。我的正常运行了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
经过研究,我尝试了以下所有步骤:
一开始似乎没有任何实际作用。但是,完成上述所有步骤后,脚本在大约24小时后无需任何修改即可再次开始工作。
答案 3 :(得分:0)
我最近遇到了这个问题。我使用相同的脚本已有3年以上,但突然停止工作了。上述解决方案对我不起作用。与Google联系后,这就是解决问题的方法(请注意,更改要花费几个小时才能传播-最多需要24小时,但通常不会那么长)
ALLOW 安全性较低的应用程序(不会单独起作用,但可能与完整的解决方案有关)
尝试解锁验证码链接:https://accounts.google.com/DisplayUnlockCaptcha(本身不起作用,但可能与完整解决方案有关)
管理控制台>应用> G Suite> Gmail>用户设置>机密模式-> 禁用机密模式
管理控制台>应用> G Suite> Gmail>最终用户访问-> 打开“允许每用户出站网关”
答案 4 :(得分:0)
答案 5 :(得分:0)
我尝试过,但是没有用。只需单击“是,是我”,然后关闭“安全应用程序访问量较少”。
答案 6 :(得分:0)
即使我遇到了这个问题,也请尝试执行以下步骤,因为google最初无缘无故地阻止了连接:
尝试打开和关闭不太安全的应用访问权限。
注销到您的帐户,然后再次登录
更改密码并点击脚本 最后打印确认,如下所示:
print('Your message has been sent!!')
如果这不起作用,请在24小时后登录,这肯定会起作用!
答案 7 :(得分:0)
如果您在同一台设备上使用多个帐户登录,则必须退出所有帐户并将此 https://accounts.google.com/b/0/DisplayUnlockCaptcha 复制并粘贴到您的网址中。您将被定向到您的 gmail 登录页面。选择您在脚本中使用的帐户,输入您的用户名和密码。该链接会将您定向到验证码页面,然后单击继续。确保在解锁验证码并运行脚本后不要关闭选项卡。如果这是第一次有效,您不必总是解锁验证码。
答案 8 :(得分:0)
就我而言,我使用的是通过 SSH 访问的云服务器中的帐户。当我从 SSH 终端访问它时,我必须建立一个 SSH 隧道才能从我的本地浏览器访问到相应的 Google URL:
ssh -D 9090 -C -N user@server-url
127.0.0.1
并将 端口 设置为 { {1}}: