Récupérer les mails d'un compte Gmail

Aller en bas

Récupérer les mails d'un compte Gmail Empty Récupérer les mails d'un compte Gmail

Message  Gus le Jeu 8 Oct - 13:03

Voici un deuxième exemple de code Java pour récupérer les mails d'un compte Gmail. Le code s'appuie sur le Java Tip suivant : http://www.java-tips.org/other-api-tips/javamail/connecting-gmail-using-pop3-connection-with-ssl-3.html

Pour tester ce code, vous devez juste remplacer les balises <votre-adresse-gmail> et <votre-mot-de-passe> par vos propres informations.
et ajouter à votre classpath le jar mail.jar de l'API javamail

Code:
import java.util.Properties;
import javax.mail.Folder;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.Session;
import javax.mail.Store;
import javax.mail.URLName;
import com.sun.mail.pop3.POP3SSLStore;


public class RetrieveGMail {

   public static void main(String[] args) throws MessagingException
   {
      String host = "pop.gmail.com";
      String username = "<votre-adresse-gmail>@gmail.com";
      String password = "<votre-mot-de-passe>";

      Properties props = new Properties();

      props.setProperty("mail.pop3.socketFactory.class", "javax.net.ssl.SSLSocketFactory");
      props.setProperty("mail.pop3.socketFactory.fallback","false");
      props.setProperty("mail.pop3.port","995");
      props.setProperty("mail.pop3.socketFactory.port","995");

      URLName url = new URLName("pop3",host ,995,"",username, password);

      Session session = Session.getInstance(props, null);
      Store store = new POP3SSLStore(session, url);
      store.connect();

      Folder folder = store.getFolder("inbox");

      try{folder.open(Folder.READ_WRITE);}
      catch(MessagingException ex)
      {folder.open(Folder.READ_ONLY);}

      int messageNb = folder.getMessageCount();
      System.out.println("total message number: "+messageNb);

      Message[] msgs = folder.getMessages();
      for(int i=0;i<msgs.length;i++)
      {
         Message m = msgs[i];
         System.out.println("Retrieving message n° "+i+": subject="+m.getSubject());
      }
      store.close();
   }
}


Dernière édition par Gus le Mer 10 Aoû - 14:42, édité 1 fois
Gus
Gus
Admin

Messages : 249
Date d'inscription : 01/09/2009

Voir le profil de l'utilisateur http://www.gus05.com

Revenir en haut Aller en bas

Récupérer les mails d'un compte Gmail Empty imports java

Message  yoruichiy le Mer 10 Aoû - 11:54

Bonjour,

Ayant un niveau débutant en java, pouvez-vous indiquer quelles sont les classes et les packages importés ainsi que les fichiers jar et l'endroit où on peut les télécharger pour que le code fonctionne.


merci par avance
yoruichiy
yoruichiy

Messages : 2
Date d'inscription : 10/08/2011

Voir le profil de l'utilisateur

Revenir en haut Aller en bas

Récupérer les mails d'un compte Gmail Empty Re: Récupérer les mails d'un compte Gmail

Message  Gus le Mer 10 Aoû - 14:46

Pour que le code fonctionne il faut juste ajouter dans le classpath de votre application Java (ou de votre projet Eclipse) le fichier jar "mail.jar" fourni par l'API JavaMail : http://www.oracle.com/technetwork/java/javamail/index.html

Je viens de re-tester le code sous forme de classe Java autonome avec une méthode publique main (voir le code source complet dans le premier message), et pour moi ça fonctionne bien. Si vous rencontrez d'autres problèmes, n'hésitez pas à me demander.

Cordialement,
Gus
Gus
Admin

Messages : 249
Date d'inscription : 01/09/2009

Voir le profil de l'utilisateur http://www.gus05.com

Revenir en haut Aller en bas

Récupérer les mails d'un compte Gmail Empty Re: Récupérer les mails d'un compte Gmail

Message  yoruichiy le Jeu 11 Aoû - 16:35

merci pour ces informations,

j'ai seulement changé le nom de la classe et instancié les variables
j'ai executé le code et j'obtiens:

Exception in thread "main" javax.mail.MessagingException: Connect failed;
nested exception is:
java.net.ConnectException: Connection timed out: connect
at com.sun.mail.pop3.POP3Store.protocolConnect(POP3Store.java:130)
at javax.mail.Service.connect(Service.java:236)
at javax.mail.Service.connect(Service.java:137)
at javax.mail.Service.connect(Service.java:86)
at TryGmailPop.main(TryGmailPop.java:30)

D'où viens cette erreur et comment la résoudre.
yoruichiy
yoruichiy

Messages : 2
Date d'inscription : 10/08/2011

Voir le profil de l'utilisateur

Revenir en haut Aller en bas

Récupérer les mails d'un compte Gmail Empty Re: Récupérer les mails d'un compte Gmail

Message  Gus le Jeu 11 Aoû - 23:22

L'erreur que tu as obtenu (un time out) semble indiquer que tu as un problème de connexion au serveur de Gmail. ca peut être dû à un problème de ton coté (firewall / routeur) ou bien c'est Gmail qui était momentanément surbooké (dans ce cas, en insistant, ça devrait finir par marcher).
Je n'ai pas de remède miracle pour que ça marche. Tu peux néanmoins activer le mode debug sur ton objet Session pour voir de plus près ce qu'il se passe :

Session session = Session.getInstance(props, null);
session.setDebug(true);


Bon courage et j'espère que ça va finir par marcher pour toi aussi.

PS : Je t'encourage à aller voir le Java Tips qui m'a permis de réaliser ça (si c'est pas déjà fait) :
http://www.java-tips.org/other-api-tips/javamail/connecting-gmail-using-pop3-connection-with-ssl-3.html
Gus
Gus
Admin

Messages : 249
Date d'inscription : 01/09/2009

Voir le profil de l'utilisateur http://www.gus05.com

Revenir en haut Aller en bas

Récupérer les mails d'un compte Gmail Empty Re: Récupérer les mails d'un compte Gmail

Message  iROmZ le Lun 2 Jan - 12:41

Bonjour,

Je viens d'essayer votre bout de code mais je tombe sur l'erreur suivante:

Exception in thread "main" javax.mail.MessagingException: Connect failed;
nested exception is:
java.net.UnknownHostException: pop.gmail.com
at com.sun.mail.pop3.POP3Store.protocolConnect(POP3Store.java:148)
at javax.mail.Service.connect(Service.java:275)
at javax.mail.Service.connect(Service.java:156)
at javax.mail.Service.connect(Service.java:105)
at Mail.main(Mail.java:30)

Auriez vous quelques explications à ce sujet car je suis clairement dans une impasse..


iROmZ

Messages : 1
Date d'inscription : 02/01/2012

Voir le profil de l'utilisateur

Revenir en haut Aller en bas

Récupérer les mails d'un compte Gmail Empty Re: Récupérer les mails d'un compte Gmail

Message  Gus le Mer 4 Jan - 11:18

Je viens de lancer le code source (ci-dessus) à l'instant en ayant remplacé les deux balises par mes infos persos et ça a très bien fonctionné. Avast m'a juste affiché un petit avertissement disant qu'une connexion sécurisé allait être créée avec google et ensuite j'ai vu défiler tous les messages de ma boite. La seule librarie Jar que j'ai mis dans mon projet Eclipse est le jar : "mail.jar"

Bref, je ne peux que redire ce que j'avais dis pour yoruichiy : l'erreur ne vient pas du code java mais d'un soucis de paramétrage sur votre machine. (par exemple : blocage firewall de la connexion sécurisée ssl...). Voici à tout hasard un lien vers un topic d'un gars qui a le même soucis que vous, on lui conseille de faire des tests de connexion avec telnet (pour vista ou seven, utiliser plutôt le freeware : putty.exe)

http://www.java-forums.org/networking/26420-error-connecting-gmail-server.html

Pour finir, le java Tip dont j'ai repris le code source :

http://www.java-tips.org/other-api-tips/javamail/connecting-gmail-using-pop3-connection-with-ssl-6.html

Bon courage !
Gus
Gus
Admin

Messages : 249
Date d'inscription : 01/09/2009

Voir le profil de l'utilisateur http://www.gus05.com

Revenir en haut Aller en bas

Récupérer les mails d'un compte Gmail Empty Re: Récupérer les mails d'un compte Gmail

Message  Contenu sponsorisé


Contenu sponsorisé


Revenir en haut Aller en bas

Revenir en haut


 
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum