2012-06-28 2 views
2

J'essaye d'écrire un programme java simple qui me renvoie tout l'email non lu de mon compte hotmail en utilisant javamail api. C'est le code que j'utilise:Impossible d'obtenir des emails non lus à partir du compte hotmail en utilisant javamail api

 String SSL_FACTORY = "javax.net.ssl.SSLSocketFactory"; 
    Properties props = new Properties(); 
    props.setProperty("mail.pop3.ssl.enable", "true"); 
    props.setProperty("mail.pop3s.socketFactory.class", SSL_FACTORY); 
    props.setProperty("mail.pop3s.socketFactory.fallback", "false"); 
    props.setProperty("mail.pop3s.port", "995"); 
    props.setProperty("mail.pop3s.socketFactory.port", "995"); 
    Session session = Session.getInstance(props, 
     new javax.mail.Authenticator() { 
      protected PasswordAuthentication getPasswordAuthentication() { 
       return new PasswordAuthentication(username, password); 
      } 
     }); 
     Store store = session.getStore("pop3"); 
     store.connect("pop3.live.com", username, password); 
     System.out.println(store); 

     Folder inbox = store.getFolder("Inbox"); 
     inbox.open(Folder.READ_ONLY); 
     FlagTerm ft = new FlagTerm(new Flags(Flags.Flag.SEEN), false); 
     Message messages[] = inbox.search(ft); 

Quelle est mon erreur dans ce code? Parce que je reçois tous les mails au lieu de seulement ceux qui ne sont pas lus.

+0

trouvez-vous une méthode comme getUnread() du dossier Boîte de réception. –

+0

oui il existe une méthode qui peut être appelée en tant que inbox.getUnreadMessageCount(); – yashdosi

Répondre

2

Je cite la documentation de Sun au sujet de leur fournisseur POP3 fourni (qui je suppose que vous utilisez) - la documentation se trouve dans/docs/SunDocs

POP3 prend en charge aucun indicateur permanent (voir Folder.getPermanentFlags ()). En particulier, l'indicateur Flags.Flag.RECENT ne sera jamais défini pour les messages POP3 . C'est à l'application de déterminer quels messages dans une boîte aux lettres POP3 sont "nouveaux". Il existe plusieurs stratégies pour accomplir cela, en fonction des besoins de l'application et de l'environnement: Une approche simple serait de garder une trace du dernier message vu par l'application. Une alternative serait de garder une trace des UID (voir ci-dessous) de tous les messages qui ont été vus. Une autre approche est pour télécharger tous les messages dans une boîte aux lettres locale, de sorte que tous les messages dans la boîte aux lettres POP3 sont, par définition, nouveau. Toutes les approches nécessitent du stockage permanent associé au client.

Je pense que cela répond à peu près votre question

Questions connexes