gmail使用python和imaplib登录失败

时间:2014-08-20 19:52:59

标签: python email gmail-imap

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

这是代码I' m开头:

import email
import imaplib

m = imaplib.IMAP4_SSL("imap.gmail.com",993)
rc, resp = m.login('myemailaddress','mypassword')

我收到以下错误:

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)'

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

允许登录工作的唯一方法是将我的Google帐户安全设置更改为&#34;允许访问不太安全的应用程序&#34;。

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

5 个答案:

答案 0 :(得分:17)

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

答案 1 :(得分:13)

如果您想避免此错误而不影响帐户的安全性,请使用OAuth进行身份验证。该协议记录在here,并且Python sample code显示了XOAUTH2与imaplib的使用。

独立于此,您应考虑在帐户中启用two-step verification以使其更安全。如果这样做,您可以使用App Password连接到IMAP,这也可能会避免上述警告。

答案 2 :(得分:3)

随着新gmail的更新,由于新的Gmail安全设置,某些应用程序的邮件服务器被阻止。为了解决这个问题,我访问了https://www.google.com/settings/security页面,并启用了“访问安全性较低的应用程序”。

答案 3 :(得分:0)

我能够通过使用文本模式浏览器(elinks)来验证我从远程服务器登录。我已经挣扎了一段时间,所以我已经尝试过启用不安全的应用程序和其他各种咒语。

在elinks中登录gmail.com后(使用仅限html的界面并将安全码发送到我的手机)我可以使用imaplib来访问gmail帐户。据推测,必须从相同的IP进行Web身份验证,尝试使用Python / imaplib。

使用OAuth协议可能更好,但这样我的脚本又重新运行而不重写它。

答案 4 :(得分:0)

发生此错误的主要原因主要有3个:

  1. Internet连接问题
  2. 错误的登录凭据
  3. myaccount.google.com/lesssecureapps已 关闭