我正试图从python脚本访问gmail中的电子邮件。我使用的代码如下:
import imaplib
m = imaplib.IMAP4_SSL("imap.gmail.com")
m.login("username","password")
m.select("[Gmail]/All Mail")
在python 2中运行这段代码时,它运行得很好,我得到了所有电子邮件的列表。在python 3 hoverer中,它失败并出现错误
>>> m.select("[Gmail]/All Mail")
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/lib/python3.2/imaplib.py", line 674, in select
typ, dat = self._simple_command(name, mailbox)
File "/usr/lib/python3.2/imaplib.py", line 1121, in _simple_command
return self._command_complete(name, self._command(name, *args))
File "/usr/lib/python3.2/imaplib.py", line 957, in _command_complete
raise self.error('%s command error: %s %s' % (name, typ, data))
imaplib.error: SELECT command error: BAD [b'[CLIENTBUG] Too many arguments for command']
我做了一些测试它在其他文件夹上运行良好,比如“收件箱”,我只收到400封电子邮件(而“所有邮件”中只有6000封)。
是不是和名单的大小有关为什么在python 2和python 3中会有所不同?
谢谢你
最佳答案
尝试使用m.select('"[Gmail]/All Mail"')
,以便传输双引号。
我怀疑imaplib没有正确引用字符串,所以服务器得到了两个参数:[Gmail]/All
和Mail
。