Impossible de récupérer les messages gmail partir de tous les dossiers autres que la boîte de réception (Python3 question)

Mise à jour: mon code fonctionne sous python 2.6.5 mais pas de python 3 (je suis en utilisant 3.4.1).

Je ne suis pas en mesure de rechercher des messages dans la "Tous les messages" ou "messages Envoyés" dossiers - j'obtiens une exception:

imaplib.error: SELECT command error: BAD [b'Could not parse command']

mon code:

import imaplib
m = imaplib.IMAP4_SSL("imap.gmail.com", 993)
m.login("[email protected]","mypassword")
m.select("[Gmail]/All Mail")

à l'aide de m.select("[Gmail]/Sent Mail") ne fonctionne pas non plus.

Mais la lecture à partir de la boîte de réception des œuvres:

import imaplib
m = imaplib.IMAP4_SSL("imap.gmail.com", 993)
m.login("[email protected]","mypassword")
m.select("inbox")
...

J'ai utilisé l'e-mail.liste() la commande pour vérifier les noms de dossier sont corrects:

b'(\\HasNoChildren) "/" "INBOX"', 
b'(\\Noselect \\HasChildren) "/" "[Gmail]"',
b'(\\HasNoChildren \\All) "/" "[Gmail]/All Mail"', 
b'(\\HasNoChildren \\Drafts) "/" "[Gmail]/Drafts"', 
b'(\\HasNoChildren \\Important) "/" "[Gmail]/Important"', 
b'(\\HasNoChildren \\Sent) "/" "[Gmail]/Sent Mail"', 
b'(\\HasNoChildren \\Junk) "/" "[Gmail]/Spam"', 
b'(\\HasNoChildren \\Flagged) "/" "[Gmail]/Starred"', 
b'(\\HasNoChildren \\Trash) "/" "[Gmail]/Trash"'

Je suis en suivant les solutions à partir de ces questions, mais elles ne fonctionnent pas pour moi:

imaplib - qu'est-Ce que le bon nom de dossier pour l'Archive/Tous les messages dans Gmail?

Je ne recherche envoyé des courriels dans Gmail avec Python

Voici un exemple complet de programme qui ne fonctionne pas sur Python 3:

import imaplib
import email

m = imaplib.IMAP4_SSL("imap.gmail.com", 993)
m.login("[email protected]","mypassword")
m.select("[Gmail]/All Mail")

result, data = m.uid('search', None, "ALL") # search all email and return uids
if result == 'OK':
    for num in data[0].split():
        result, data = m.uid('fetch', num, '(RFC822)')
        if result == 'OK':
            email_message = email.message_from_bytes(data[0][1])    # raw email text including headers
            print('From:' + email_message['From'])

m.close()
m.logout()

L'exception suivante est générée:

Traceback (most recent call last):
File "./eport3.py", line 9, in <module>
m.select("[Gmail]/All Mail")
File "/RVM/lib/python3/lib/python3.4/imaplib.py", line 682, in select
typ, dat = self._simple_command(name, mailbox)
File "/RVM/lib/python3/lib/python3.4/imaplib.py", line 1134, in _simple_command
return self._command_complete(name, self._command(name, *args))
File "/RVM/lib/python3/lib/python3.4/imaplib.py", line 965, in _command_complete
raise self.error('%s command error: %s %s' % (name, typ, data))
imaplib.error: SELECT command error: BAD [b'Could not parse command']

Voici le correspondant Python 2 version qui fonctionne:

import imaplib
import email

m = imaplib.IMAP4_SSL("imap.gmail.com", 993)
m.login("[email protected]","mypassword")
m.select("[Gmail]/All Mail")

result, data = m.uid('search', None, "ALL") # search all email and return uids
if result == 'OK':
    for num in data[0].split():
        result, data = m.uid('fetch', num, '(RFC822)')
        if result == 'OK':
            email_message = email.message_from_string(data[0][1])    # raw email text including headers
            print 'From:' + email_message['From']

m.close()
m.logout()