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

Mar*_*kus 2 python

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

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

srv = imaplib.IMAP_SSL("imap.gmail.com")
srv.login("bob@gmail.com", "mypassword")
Run Code Online (Sandbox Code Playgroud)

但相反,我正在尝试使用文本文件(credentials.dat).文件内部有2行:

bob@gmail.com
mypassword
Run Code Online (Sandbox Code Playgroud)

我的代码如下:

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

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

srv = imaplib.IMAP4_SSL("imap.gmail.com")
srv.login(account, password)
Run Code Online (Sandbox Code Playgroud)

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

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']
Run Code Online (Sandbox Code Playgroud)

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

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

谢谢你的时间.

lun*_*chs 5

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

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