2017-04-12 2 views
1

Ich versuche, die ungelesene Nachrichtennummer von meinem hotamil-Konto zu erhalten. Ich nutze aber ich habe ein Problem, es gibt mir immer die gesamte vorhandene E-Mail-Nummer im Posteingang zurück. hier habe ich meinen Code teilen:Wie überprüfe ich wie viele ungelesene Nachrichten in meinem Hotmail-Konto von javamail api sind?

public class testEmail { 
    public static void check(String host, String storeType, String user, 
       String password) 

      { 
       try { 

       //create properties field 
       Properties properties = new Properties(); 
       properties.put("mail.pop3.host", host); 
       properties.put("mail.pop3.port", "995"); 
      properties.put("mail.pop3.starttls.enable", "true"); 

      // properties.put("mail.imap.ssl.enable", "true");   
       Session emailSession = Session.getInstance(properties, null); 
       emailSession.setDebug(false); 

       //create the POP3 store object and connect with the pop server 
       Store store = emailSession.getStore("pop3s"); 

       store.connect(host, user, password); 
       //create the folder object and open it 
       Folder emailFolder = store.getFolder("INBOX"); 
       emailFolder.open(Folder.READ_ONLY); 

      //for count the unread email 
      FlagTerm ft = new FlagTerm(new Flags(Flags.Flag.SEEN), false); 
      Message messages[] = emailFolder.search(ft); 
      System.out.println("No. of Unread Messages : " + messages.length); 

       emailFolder.close(false); 
       store.close(); 

       } catch (NoSuchProviderException e) { 
       e.printStackTrace(); 
       } catch (MessagingException e) { 
       e.printStackTrace(); 
       } catch (Exception e) { 
       e.printStackTrace(); 
       } 
      } 

      public static void main(String[] args) { 

       String host = "pop-mail.outlook.com";// change accordingly 
       String mailStoreType = "pop3"; 
       String username = "[email protected]";// change accordingly 
       String password = "abc";// change accordingly 

       check(host, mailStoreType, username, password); 

      } 

     } 

Wenn ich FlagTerm(new Flags(Flags.Flag.SEEN), true); seine Rückkehr 0. ist dieses Problem über Code oder Hotmail-Konto. Danke im Voraus.

+0

Versuchen Sie die Folder.getUnreadMessageCount() -Methode. – Eritrean

+0

Ich habe auch mit dieser Methode versucht, aber das Ergebnis ist das gleiche. –

Antwort

0

Flags.Flag.SEEN funktioniert nicht richtig in POP3, also änderte ich es zu IMAP. Es gibt eine andere Sache, wenn mail.imap.port = 993 nicht funktioniert, dann verwenden Sie 25. Die Antwort bezieht sich auf Hotmail.

+0

Wie im Dokument beschrieben, [POP3 unterstützt keine Flags aufgrund von Einschränkungen des POP3-Protokolls] (https://javamail.java.net/nonav/docs/api/com/sun/mail/pop3/package- Zusammenfassung.html). –

Verwandte Themen