Recevoir des e-mails du serveur en utilisant JavaMail


Cet article décrit les étapes de téléchargement de messages électroniques à partir de la boîte de réception d’un serveur POP3/IMAP, à l’aide de l’API JavaMail. 

L’image suivante illustre comment les messages sont logiquement stockés sur le serveur: nous pouvons voir, pour chaque compte d’utilisateur, le serveur a un magasin qui est le stockage des messages de l’utilisateur. 

Le magasin est divisé en dossiers, et le dossier « boîte de réception » est le dossier principal qui contient les messages électroniques. Un dossier peut contenir à la fois des messages et des sous-dossiers. En parlant du langage de l’API JavaMail, il fournit trois classes correspondantes: Store, Folder et Message. Ci-dessous l'image selon Code Java. Merci

Un objet Store peut être obtenu à partir de la session en cours en appelant la méthode getStore(String protocol) de la classe Session. Connexion au Store en appelant sa méthode connect(String user, String pass), déconnexion en appelant sa méthode close().

 

-          Un objet Folder peut être obtenu à partir du magasin en appelant la méthode getFolder(String folderName). Pour une boîte aux lettres normale, le nom du dossier doit être « boîte de réception » (insensible à la casse). Les méthodes les plus importantes de la classe Folder sont les suivantes :

 

open(int mode) : ouvre le dossier en mode READ_ONLY ou en mode READ_WRITE.

getMessages() : récupère un tableau d’objets Message marqués comme non lus dans le dossier. Un objet Message peut être une référence légère et son contenu détaillé sera rempli à la demande.

close(boolean expunge) : ferme le dossier et supprime définitivement tous les messages marqués delete, si expunge a la valeur true.

-          Un objet Message représente un message électronique. Pour obtenir les attributs détaillés d’un message, les méthodes suivantes peuvent être appelées sur l’objet Message :

 

Address[] getFrom() : renvoie une liste d’expéditeurs dans l’attribut De du message.

Address[] getRecipients(type Message.RecipientType) : obtient les adresses des destinataires du message, le type peut être TO ou CC.

String getSubject() : obtient l’objet du message.

Date getSentDate() : obtient la date et l’heure d’envoi du message.

Object getContent() : obtient le contenu du message.


En règle générale, les étapes pour se connecter à un serveur et télécharger de nouveaux messages électroniques sont les suivantes :

-          Préparez un objet Properties qui contient les paramètres du serveur tels que l’hôte, le port, le protocole...

-          Créez une session pour lancer une session de travail avec le serveur.

-          Obtenir un magasin de la session par un protocole spécifique (IMAP ou POP3). IMAP est recommandé.

-          Connectez-vous au magasin à l’aide d’informations d’identification (nom d’utilisateur et mot de passe).

-          Obtient le dossier de la boîte de réception du magasin.

-          Ouvrez le dossier de la boîte de réception.

-          Récupérez les messages du dossier.

-          Récupérez les détails de chaque message.

-          Fermez le dossier.

-          Fermez la boutique.

Et voici le code d’un exemple de programme :LIEN ICI

Dans la classe EmailReceiver ci-dessus, la méthode principale est downloadEmail() et les deux méthodes d’assistance, getServerProperties() et parseAddresses(). Les informations du serveur utilisées pour les tests sont le serveur IMAP de Gmail, et n’oubliez pas de modifier le nom d’utilisateur et le mot de passe pour qu’ils correspondent à votre compte.

Et pour terminer,vous devez utiliser les fichiers jar JavaMail. Si vous utilisez Maven, ajoutez la dépendance suivante au fichier pom.xml :

1
2
3
4
5
<dependency>
    <groupId>com.sun.mail</groupId>
    <artifactId>javax.mail</artifactId>
    <version>1.6.2</version>
</dependency>





0 Commentaires