3

Python スクリプトから Gmail のメールにアクセスしようとしています。私が使用するコードは次のとおりです。

import imaplib
m = imaplib.IMAP4_SSL("imap.gmail.com")
m.login("username","password")
m.select("[Gmail]/All Mail")

このコードを Python 2 で実行すると、問題なく動作し、すべてのメールのリストを取得できます。Python 3ホバラーでは、エラーで失敗します

>>> 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 で異なるのはなぜですか?

ありがとうございました

4

1 に答える 1

7

m.select('"[Gmail]/All Mail"')を使用して、二重引用符が送信されるようにしてください。

imaplib が文字列を適切に引用していないと思われるため、サーバーは と のように見える 2 つの引数を取得し[Gmail]/AllますMail

于 2012-07-31T13:39:44.460 に答える