API JavaMail - Serveurs IMAP

IMAP est l'acronyme de Internet Message Access Protocol. Il s'agit d'un protocole Internet de couche d'application qui permet à un client de messagerie d'accéder au courrier électronique sur un serveur de messagerie distant. Un serveur IMAP écoute généralement sur le port 143. IMAP over SSL (IMAPS) est affecté au numéro de port 993.

IMAP prend en charge les modes de fonctionnement en ligne et hors ligne. Les clients de messagerie utilisant IMAP laissent généralement des messages sur le serveur jusqu'à ce que l'utilisateur les supprime explicitement.

Paquet com.sun.mail.imapest un fournisseur de protocole IMAP pour l'API JavaMail qui permet d'accéder à une banque de messages IMAP. Le tableau ci-dessous répertorie l'interface et les classes de ce fournisseur:

Classe / InterfaceLa description
IMAPFolder.ProtocolCommandIl s'agit d'une interface simple pour les commandes de protocole IMAP définies par l'utilisateur.
ACLCeci est une classe. Une entrée de liste de contrôle d'accès pour un identifiant d'authentification particulier (utilisateur ou groupe).
IMAPFolderCette classe implémente un dossier IMAP.
IMAPFolder.FetchProfileItemC'est une classe pour récupérer les en-têtes.
IMAPMessageCette classe implémente un objet ReadableMime.
IMAPMessage.FetchProfileCondition Cette classe implémente le test à effectuer sur chaque message du dossier.
IMAPSSLStoreCette classe permet d'accéder à une banque de messages IMAP via SSL.
IMAPStoreCette classe permet d'accéder à une banque de messages IMAP.
DroitsCette classe représente l'ensemble des droits pour un identifiant d'authentification (par exemple, un utilisateur ou un groupe).
Droits. Cette classe intérieure représente un droit individuel.
TrierTermUn critère de tri particulier, tel que défini par RFC 5256.

Quelques points à noter au-dessus de ce fournisseur:

  • Ce fournisseur prend en charge les protocoles IMAP4 et IMAP4rev1.

  • Un IMAPStore connecté gère un pool d'objets de protocole IMAP à utiliser pour communiquer avec le serveur IMAP. Au fur et à mesure que les dossiers sont ouverts et que de nouveaux objets de protocole IMAP sont nécessaires, IMAPStore les fournira à partir du pool de connexions, ou les créera si aucun n'est disponible. Lorsqu'un dossier est fermé, son objet de protocole IMAP est renvoyé au pool de connexions si le pool.

  • L'objet IMAPStore connecté peut ou non maintenir un objet de protocole IMAP distinct qui fournit au magasin une connexion dédiée au serveur IMAP.

Le fournisseur de protocole IMAP prend en charge les propriétés suivantes, qui peuvent être définies dans l'objet Session JavaMail. Les propriétés sont toujours définies sous forme de chaînes; laType La colonne décrit comment la chaîne est interprétée.

NomTypeLa description
mail.imap.userChaîneNom d'utilisateur par défaut pour IMAP.
mail.imap.hostChaîneLe serveur IMAP auquel se connecter.
mail.imap.portintLe port du serveur IMAP auquel se connecter, si la méthode connect () n'en spécifie pas explicitement un. La valeur par défaut est 143.
mail.imap.partialfetch booléenContrôle si la capacité d'extraction partielle IMAP doit être utilisée. La valeur par défaut est true.
mail.imap.fetchsizeintTaille de récupération partielle en octets. La valeur par défaut est 16K.
mail.imap.ignorebodystructuresize booléenLa réponse IMAP BODYSTRUCTURE inclut la taille exacte de chaque partie du corps. Normalement, cette taille est utilisée pour déterminer la quantité de données à récupérer pour chaque partie du corps. La valeur par défaut est false.
mail.imap.connectiontimeoutintValeur du délai d'expiration de la connexion au socket en millisecondes. La valeur par défaut est le délai d'expiration infini.
mail.imap.timeout intValeur du délai d'expiration d'E / S de socket en millisecondes. La valeur par défaut est le délai d'expiration infini.
mail.imap.statuscachetimeoutintValeur du délai d'expiration en millisecondes pour le cache de la réponse à la commande STATUS. La valeur par défaut est 1000 (1 seconde). Zéro désactive le cache.
mail.imap.appendbuffersizeintTaille maximale d'un message à mettre en mémoire tampon lors de l'ajout à un dossier IMAP.
mail.imap.connectionpoolsize intNombre maximum de connexions disponibles dans le pool de connexions. La valeur par défaut est 1.
mail.imap.connectionpooltimeoutintValeur du délai en millisecondes pour les connexions du pool de connexions. La valeur par défaut est 45 000 (45 secondes).
mail.imap.separatestoreconnection booléenIndicateur pour indiquer s'il faut utiliser une connexion de magasin dédiée pour les commandes de magasin. La valeur par défaut est false.
mail.imap.auth.login.disablebooléenSi true, empêche l'utilisation de la commande non standard AUTHENTICATE LOGIN, au lieu d'utiliser la commande LOGIN simple. La valeur par défaut est false.
mail.imap.auth.plain.disable booléenSi true, empêche l'utilisation de la commande AUTHENTICATE PLAIN. La valeur par défaut est false.
mail.imap.auth.ntlm.disablebooléenSi vrai, empêche l'utilisation de la commande AUTHENTICATE NTLM. La valeur par défaut est false.
mail.imap.proxyauth.userChaîneSi le serveur prend en charge l'extension PROXYAUTH, cette propriété spécifie le nom de l'utilisateur sous lequel agir. Authentifiez-vous auprès du serveur à l'aide des informations d'identification de l'administrateur. Après l'authentification, le fournisseur IMAP émettra la commande PROXYAUTH avec le nom d'utilisateur spécifié dans cette propriété.
mail.imap.localaddressChaîneAdresse locale (nom d'hôte) à laquelle se connecter lors de la création du socket IMAP. Par défaut, l'adresse sélectionnée par la classe Socket.
mail.imap.localport intNuméro de port local auquel se connecter lors de la création du socket IMAP. Par défaut, le numéro de port choisi par la classe Socket.
mail.imap.sasl.enablebooléenS'il est défini sur true, essayez d'utiliser le package javax.security.sasl pour choisir un mécanisme d'authentification pour la connexion. La valeur par défaut est false.
mail.imap.sasl.mechanismsChaîneUne liste de noms de mécanismes SASL séparés par des espaces ou des virgules à essayer d'utiliser.
mail.imap.sasl.authorizationidChaîneID d'autorisation à utiliser dans l'authentification SASL. S'il n'est pas défini, l'ID d'authentification (nom d'utilisateur) est utilisé.
mail.imap.sasl.realmChaîneDomaine à utiliser avec les mécanismes d'authentification SASL qui nécessitent un domaine, tel que DIGEST-MD5.
mail.imap.auth.ntlm.domainChaîneLe domaine d'authentification NTLM.
mail.imap.auth.ntlm.flags intIndicateurs spécifiques au protocole NTLM.
mail.imap.socketFactory Usine de douillesSi elle est définie sur une classe qui implémente l'interface javax.net.SocketFactory, cette classe sera utilisée pour créer des sockets IMAP.
mail.imap.socketFactory.classChaîneS'il est défini, spécifie le nom d'une classe qui implémente l'interface javax.net.SocketFactory. Cette classe sera utilisée pour créer des sockets IMAP.
mail.imap.socketFactory.fallbackbooléenS'il est défini sur true, l'échec de la création d'un socket à l'aide de la classe d'usine de socket spécifiée entraînera la création du socket à l'aide de la classe java.net.Socket. La valeur par défaut est true.
mail.imap.socketFactory.portintSpécifie le port auquel se connecter lors de l'utilisation de la fabrique de sockets spécifiée. Le port par défaut est utilisé lorsqu'il n'est pas défini.
mail.imap.ssl.enablebooléenS'il est défini sur true, utilisez SSL pour vous connecter et utilisez le port SSL par défaut. La valeur par défaut est false pour le protocole "imap" et true pour le protocole "imaps".
mail.imap.ssl.checkserveridentitybooléenS'il est défini sur true, vérifiez l'identité du serveur comme spécifié par RFC 2595. La valeur par défaut est false.
mail.imap.ssl.trustChaîneS'il est défini et qu'aucune fabrique de sockets n'a été spécifiée, permet l'utilisation d'un MailSSLSocketFactory.
S'il est défini sur "*", tous les hôtes sont approuvés.
S'il est défini sur une liste d'hôtes séparés par des espaces, ces hôtes sont approuvés.
Sinon, la confiance dépend du certificat présenté par le serveur.
mail.imap.ssl.socketFactory Usine de sockets SSLSi elle est définie sur une classe qui étend la classe javax.net.ssl.SSLSocketFactory, cette classe sera utilisée pour créer des sockets SSL IMAP.
mail.imap.ssl.socketFactory.classChaîneS'il est défini, spécifie le nom d'une classe qui étend la classe javax.net.ssl.SSLSocketFactory. Cette classe sera utilisée pour créer des sockets SSL IMAP.
mail.imap.ssl.socketFactory.portintSpécifie le port auquel se connecter lors de l'utilisation de la fabrique de sockets spécifiée. S'il n'est pas défini, le port par défaut sera utilisé.
mail.imap.ssl.protocols chaîneSpécifie les protocoles SSL qui seront activés pour les connexions SSL. La valeur de la propriété est une liste séparée par des espaces de jetons acceptables pour la méthode javax.net.ssl.SSLSocket.setEnabledProtocols.
mail.imap.starttls.enable booléenSi la valeur est true, active l'utilisation de la commande STARTTLS (si prise en charge par le serveur) pour basculer la connexion vers une connexion protégée par TLS avant d'émettre des commandes de connexion. La valeur par défaut est false.
mail.imap.starttls.required booléenSi vrai, nécessite l'utilisation de la commande STARTTLS. Si le serveur ne prend pas en charge la commande STARTTLS ou si la commande échoue, la méthode de connexion échouera. La valeur par défaut est false.
mail.imap.socks.host chaîneSpécifie le nom d'hôte d'un serveur proxy SOCKS5 qui sera utilisé pour les connexions au serveur de messagerie.
mail.imap.socks.portchaîneSpécifie le numéro de port du serveur proxy SOCKS5. Cela ne devrait être utilisé que si le serveur proxy n'utilise pas le numéro de port standard de 1080.
mail.imap.minidletimeintCette propriété définit le délai en millisecondes. S'il n'est pas défini, la valeur par défaut est de 10 millisecondes.
mail.imap.enableimapevents booléenActivez les événements spéciaux spécifiques à IMAP à livrer à ConnectionListener du magasin. Si vrai, les réponses non sollicitées reçues pendant la méthode d'inactivité du magasin seront envoyées en tant que ConnectionEvents avec un type IMAPStore.RESPONSE. Le message de l'événement sera la chaîne de réponse IMAP brute. Par défaut, ces événements ne sont pas envoyés.
mail.imap.folder.classChaîneNom de classe d'une sous-classe de com.sun.mail.imap.IMAPFolder. La sous-classe peut être utilisée pour prendre en charge des commandes IMAP supplémentaires. La sous-classe doit avoir des constructeurs publics de la forme public MyIMAPFolder (String fullName, char separator, IMAPStore store, Boolean isNamespace) et public MyIMAPFolder (ListInfo li, IMAPStore store)

En général, les applications ne devraient pas avoir besoin d'utiliser directement les classes de ce package. Au lieu de cela, ils doivent utiliser les API définies par le package javax.mail (et les sous-packages). Les applications ne doivent jamais construire directement des instances d'IMAPStore ou d'IMAPFolder. Au lieu de cela, ils doivent utiliser la méthode de session getStore pour acquérir un objet Store approprié et à partir de là acquérir des objets Folder.

Des exemples d'utilisation du serveur IMAP sont présentés dans le chapitre Gestion des quotas .