我提前道歉,我知道这将是一个简单的答案,但我没有运气,它开始让我烦恼。
我只想使用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后我还想做更多的事情(阅读电子邮件,发帖等),但如果我甚至无法登录,那看起来就像是一场艰苦的战斗:(
感谢您的时间。
答案 0 :(得分:5)
readline()
在行尾包含换行符,所以你真的说:用'bob@gmail.com\n'
尝试readline().strip()
从该行的两边剥去空白字符。