11.8.1 Objets IMAP4

Toutes les commandes IMAP4rev1 sont représentées par des méthodes du même nom, soit en minuscule soit en majuscule.

Tous les arguments des commandes sont converties en chaînes de caractères, sauf "AUTHENTICATE", et le dernier argument de "APPEND" qui est passé comme un caractère littéral IMAP4. Si nécessaire, (la chaîne contient des caractères traité par le protocole IMAP4 et n'est pas incluse dans des parenthèses ni des guillemets doubles) chaque chaîne est mise entre guillemets. Cependant, l'argument motdepasse de la commande "LOGIN" est toujours mise entre guillemets. Si vous voulez éviter d'avoir une chaîne d'arguments entre guillemets (par exemple l'argument indicateurs de "STORE") alors mettez la chaîne entre parenthèses (par exemple: r'(\Supprimé)').

Chaque commande retourne un tuple: (type, [donnees, ...])type vaut généralement 'OK' oo 'NO', et donnees est soit le texte de la réponse à la commande, soit des résultats produits par la commande.

Une instance de IMAP4 possède les méthodes suivantes:

append(boite, indicateurs, date_heure, message)
Ajoute le message à la boîte indiquée.

authenticate(fonc)
Authentifie la commande - nécessite un traitement de la réponse. Pour l'instant ceci n'est pas implémenté, et déclenche une exception.

check()
Vérifie une boîte aux lettres sur le serveur.

close()
Ferme la boîte aux lettres en cours. Les messages détruits sont enlevés de la boîte ouverte en écriture. C'est la commande recommandée avant "LOGOUT".

copy(ensemble_messages, nouvelle_boite)
Copie ensemble_messages messages à la fin de nouvelle_boite.

create(boite)
Crée une nouvelle boîte aux lettres appelée boite.

delete(boite)
Détruit la vieille boîte aux lettres appelée boite.

expunge()
Enlève définitivement les éléments détruits de la boîte aux lettres sélectionnée. Provoque une réponse "EXPUNGE" pout chaque message détruit. Les données retournées contiennent une liste de numéros de messages "EXPUNGE" dans l'ordre de réception.

fetch(ensemble_messages, parties_de_messages)
Va chercher des (parties de) messages. message_parts est une chaîne de noms de parties de messages inclus entre parenthèses, par exemple: ""(UID BODY[TEXT])"". Les données retournées sont des tuples d'enveloppes et de données de parties de messages.

list([repertoire[, motif]])
Liste les noms de boîtes aux lettres dans repertoire correspondant à motif. Par défaut, repertoire est la racine du dossier de courrier, et motif sélectionne tout. Les données retournées contiennent une liste de réponses "LIST".

login(utilisateur, mot_de_passe)
Identifie le client en utilisant un mot de passe en texte simple. Le mot_de_passe sera mis entre guillemets.

logout()
Ferme la connexion au serveur. Retourne la réponse "BYE" du serveur.

lsub([repertoire[, motif]])
Liste les noms des boîtes aux lettres abonnées dans le répertoire correspondant au motif. Par défaut, repertoire est le répertoire racine et motif sélectionne tout. Les données retournées sont des tuples d'enveloppes et de données de parties de messages.

noop()
Envoie "NOOP" au serveur.

open(hote, port)
Ouvre une socket vers le port de l'hote. Vous pouvez surcharger cette méthode.

partial(num_message, partie_message, debut, longueur)
Va chercher des parties tronquées d'un message. Les données retournées sont un tuple d'enveloppes et de données de partie de message.

recent()
Sollicite le serveur pour une mise à jour. Les données retournées sont None s'il n'y a pas de nouveau message, sinon la valeur de la réponse "RECENT".

rename(ancienne_boite, nouvelle_boite)
Renomme la boîte aux lettres appelée ancienne_boite en nouvelle_boite.

response(code)
Retourne les données pour la réponse code si elle est reçue, ou None. Retourne le code donné, à la place du type habituel.

search(jeu_caracteres, critere[, ...])
Cherche dans la boîte aux lettres selon des critères. Les données retournées contiennent une liste séparée par des espaces de numéros de messages répondant aux critères. jeu_caracteres peut valoir None, auquel cas aucun "CHARSET" (jeu de caractères) ne sera précisé dans la requête au serveur. Le protocole IMAP nécessite qu'au moins un critère soit fourni; une exception sera déclenchée si le serveur retourne une erreur.

Exemple:

# M est une instance IMAP4 connectée IMAP4...
nums_msg = M.search(None, 'FROM', '"LDJ"')


# ou:
nums_msg = M.search(None, '(FROM "LDJ")')

select([boite[, lecture_seule]])
Sélectionne une boîte aux lettres. Les données retournées sont le nombre de messages dans la boite (réponse "EXISTS"). La boite par défaut est 'INBOX'. Si l'indicateur lecture_seule est vrai, les modifications à la boîte aux lettres ne sont pas permises.

socket()
Retourne l'instance de socket utilisée pour se connecter au serveur.

status(boite, noms)
Retourne l'état des variables dont les noms sont précisés pour la boite.

store(ensemble_messages, commande, liste_indicateurs)
Modifie les dispositions d'indicateurs pour les messages dans la boîte aux lettres.

subscribe(boite)
S'abonne à la nouvelle boîte.

uid(commande, arg[, ...])
Exécute les commandes avec arguments pour les messages identifiés par UID, plutôt que par numéro de message. Retourne la réponse appropriée à la commande. Il faut fournir au moins un argument; si aucun n'est fourni, le serveur retournera une erreur et une exception sera déclenchée.

unsubscribe(boite)
Se désabonne de l'ancienne boite.

xatom(nom[, arg[, ...]])
Autorise des commandes d'extension simples notifiées par le serveur dans la réponse "CAPABILITY".

Les attributs suivants sont définis sur les instances de IMAP4:

PROTOCOL_VERSION
Le plus récent protocole pris en charge dans la réponse "CAPABILITY" du serveur.

debug
Valeur entière pour contrôle le volume de débogage. La valeur d'initialisation est prise de la variable de module Debug. Des valeurs plus grandes que trois tracent toutes les commandes.