使用imaplib使用文件中的凭据登录Gmail

时间:2011-07-11 23:50:04

标签: python

我提前道歉,我知道这将是一个简单的答案,但我没有运气,它开始让我烦恼。

我只想使用imaplib和从文件中提取的凭据登录我的Gmail帐户。 我可以使用以下方式登录Gmail而不用担心:

srv = imaplib.IMAP_SSL("imap.gmail.com")
srv.login("bob@gmail.com", "mypassword")

但我试图使用文本文件(credentials.dat)。文件内部有两行:

bob@gmail.com
mypassword

我的代码如下:

import imaplib
CREDS = open("credentials.dat", "r")

account = CREDS.readline()
password = CREDS.readline()

srv = imaplib.IMAP4_SSL("imap.gmail.com")
srv.login(account, password)

当我运行它时,我收到了以下错误:

Traceback (most recent call last):
    File "<stdin>", line 1, in ?
    File "/usr/lib64/python2.4/imaplib.py", line 480, in login
       typ, dat = self._simple_command('LOGIN', user, self._quote(password))
    File "/usr/lib64/python2.4/imaplib.py", line 1028, in _simple_command
       return self._command_complete(name, self._command(name, *args))
    File "/usr/lib64/python2.4/imaplib.py", line 865, in _command_complete
       raise self.error('%s command error: %s %s' % (name, typ, data))
       imaplib.error: LOGIN command error: BAD ['Failed to parse your command      r13if7033890ebd.47']

我认为它不喜欢输入srv.login的数据类型,但我不知道如何做到这一点。

进入Gmail后我还想做更多的事情(阅读电子邮件,发帖等),但如果我甚至无法登录,那看起来就像是一场艰苦的战斗:(

感谢您的时间。

1 个答案:

答案 0 :(得分:5)

readline()在行尾包含换行符,所以你真的说:用'bob@gmail.com\n'

登录

尝试readline().strip()从该行的两边剥去空白字符。