gmail使用python和imaplib登录失败

who*_*510 21 python email gmail-imap

我正在寻求一些帮助登录到一个Gmail帐户并使用python脚本下载一些电子邮件.我正在尝试调整此处找到的方法,但我遇到了第1步的问题,通过imap访问帐户.

这是我开始的代码:

import email
import imaplib

m = imaplib.IMAP4_SSL("imap.gmail.com",993)
rc, resp = m.login('myemailaddress','mypassword')
Run Code Online (Sandbox Code Playgroud)

我收到以下错误:

Traceback (most recent call last):
  File "email.py", line 1, in <module>
    import email, imaplib
  File "/home/will/wd/email.py", line 14, in <module>
     m.login('myemailaddress','mypassword')
  File "/usr/lib/python3.4/imaplib.py", line 538, in login
    raise self.error(dat[-1])
 imaplib.error: b'[ALERT] Please log in via your web browser: http://support.google.com/mail/accounts/bin/answer.py?answer=78754 (Failure)'
Run Code Online (Sandbox Code Playgroud)

确实在gmail设置中启用了Imap.我已经查看了谷歌支持链接上的说明以及类似情况下有关此错误的问题,例如此处和此处,但我的情况与第一次不同,因为
1)它从未开始工作,
2)我是不经常运行它被阻止.它也与第二个示例不同,因为这是一个普通的Gmail帐户,而不是具有谷歌应用程序帐户的自定义域.
使用https://accounts.google.com/DisplayUnlockCaptcha尝试并允许访问对我来说也不起作用.

允许登录工作的唯一方法是将我的Google帐户安全设置更改为"允许访问安全性较低的应用".

我的问题是:我如何修改我的代码(或更常见的设置)以允许我登录,而无需放宽我的帐户安全设置?有没有办法使用libimap满足安全要求?

小智 19

您可以尝试启用此功能:https://www.google.com/settings/security/lesssecureapps 此操作为我解决了同样的问题.

  • @AlexOls这对我有用.但是,我在我的问题中注意到我做了这个,并特别询问是否有办法让imaplib工作_without_更改我的帐户安全设置,所以我不能将此标记为正确. (6认同)
  • 尝试从链接中提供的链接中包含相关详细信息,以防链接在将来消失. (2认同)

小智 13

如果您想在不影响帐户安全性的情况下避免此错误,请使用OAuth进行身份验证.这里记录了协议,并且有一些Python示例代码显示了XOAUTH2与imaplib的使用.

与此无关,您应考虑在帐户中启用两步验证,以确保帐户更安全.如果这样做,您可以使用应用程序密码连接到IMAP,这也可能避免上述警告.