Fab*_*res 9 python gmail smtplib
我有一个脚本,它会定期向收件人列表发送报告。一切正常,直到今天凌晨 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()
Run Code Online (Sandbox Code Playgroud)
我收到以下(旧的)结果:
(250, b'smtp.gmail.com 为您服务, [SERVERIP]\nSIZE 35882577\n8BITMIME\nSTARTTLS\nENHANCEDSTATUSCODES\nPIPELINING\nCHUNKING\nSMTPUTF8') (220, b'2.0.0 准备启动 TLS') ( , b'smtp.gmail.com 为您服务,[SERVERIP]\nSIZE 35882577\n8BITMIME\nAUTH LOGIN PLAIN XOAUTH2 PLAIN-CLIENTTOKEN OAUTHBEARER XOAUTH\nENHANCEDSTATUSCODES\nPIPELINING 最近调用\nSMTPCHUNKFile\nSMTPCHUNKFile\n8BITMIME\n <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",第 720 行,在登录名 initial_response_ok=initial_response_ok) 文件“C:\Python\Python36\lib\smtplib.py”,第 641 行,在 auth 中引发 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>请通过网络浏览器登录\n5.7.14,然后重试。\n5.7.14 了解更多信息\n5.7.1414 在\n5.7.14 了解更多信息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,但是它需要更改我的代码,由于服务器中的一些限制,我想避免这种更改。
我也有这个问题。我的邮件转发器脚本已经正常工作了 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 小时后重新开始工作,无需任何修改。
我已经使用 Google Gmail API 解决了这个问题。谷歌似乎阻止或限制了我的帐户通过未知设备登录,因为我只能通过浏览器登录,并且在我确认电话号码和短信发送的代码后。
所以我决定放弃使用 smtplib 并使用 Google 用于 Gmail 的 API 实现访问:https : //developers.google.com/api-client-library/python/ https://developers.google.com/gmail/ api/指南/发送
希望这可以帮助其他遇到此问题的人。
我最近遇到了这个问题。我已经使用相同的脚本 3 年多,但它突然停止工作。上述解决方案对我不起作用。联系谷歌后,这里是解决问题的方法(请注意,更改可能需要几个小时才能传播 - 最多 24 小时,但通常不会那么长)
在谷歌设置中允许低安全应用(对自身没有影响,但可能与完整解决方案有关)
尝试解锁验证码链接:https : //accounts.google.com/DisplayUnlockCaptcha(本身没有影响,但可能与完整解决方案有关)
管理控制台 > 应用程序 > G Suite > Gmail > 用户设置 > 机密模式 -->禁用机密模式
管理控制台 > 应用程序 > G Suite > Gmail > 最终用户访问 -->开启“允许每个用户的出站网关”