2012-06-28 84 views
2

我正在嘗試編寫一個簡單的java程序,它將使用javamail api從我的hotmail帳戶返回所有未讀電子郵件。這是我正在使用的代碼:無法從hotmail帳戶使用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); 

這段代碼的錯誤是什麼?因爲我收到所有郵件,而不是隻讀未讀郵件。

+0

你覺得像getUnread任何方法()收件箱文件夾中。 –

+0

是的,有一種方法可以調用inbox.getUnreadMessageCount(); – yashdosi

回答

2

從Sun的關於他們的捆綁POP3提供程序文檔(這我假設你正在使用)報價 - 文件位於/文檔/ sundocs

POP3支持沒有永久的標誌(見Folder.getPermanentFlags( ))。特別是,在 消息中,Flags.Flag.RECENT標誌永遠不會設置爲POP3 消息。由應用程序決定POP3郵箱中的哪些郵件是「新的」。有幾種策略可以完成 這取決於應用程序和環境的需要:簡單的方法是跟蹤 應用程序看到的最新消息。另一種方法是跟蹤所有看到的消息的UID (見下文)。另一種方法是 將所有郵件下載到本地郵箱,以便根據定義,POP3郵箱中的所有郵件都是新的。所有的方法都需要 一些與客戶端相關的永久性存儲。

我覺得非常回答您的問題

相關問題