大收件箱中的imaplib.select:命令的参数太多了

时间:2012-07-31 09:18:00

标签: python python-3.x imap gmail-imap

我正在尝试通过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和3中有所不同?

谢谢

1 个答案:

答案 0 :(得分:7)

尝试使用m.select('"[Gmail]/All Mail"'),以便传输双引号。

我怀疑imaplib没有正确引用该字符串,因此服务器获得了两个参数:[Gmail]/AllMail