2010-03-29 23 views
4

我一直在使用javamail從IMAP服務器(目前是GMail)檢索郵件。 Javamail從服務器中快速檢索特定文件夾中的消息列表(僅限ID),但是當我實際獲取消息(僅包含內容)時,每條消息大約需要1到2秒。什麼技術應該用於快速檢索?Javamail性能

這裏是我的代碼:

try { 
     IMAPStore store = null; 
     if(store!=null&&store.isConnected())return; 
     Properties props = System.getProperties(); 
     Session sessionIMAP = Session.getInstance(props, null); 
     try { 
      store = (IMAPStore) sessionIMAP.getStore("imaps"); 
      store.connect("imap.gmail.com",993,"[email protected]","password"); 
     } catch (Exception e) { 
      e.printStackTrace(); 
     } 

     IMAPFolder folder = (IMAPFolder) store.getFolder("INBOX"); 
     folder.open(Folder.READ_ONLY); 
     System.out.println("start"); 
     Message[] msgs = folder.getMessages(1,10); 
     long ftime = System.currentTimeMillis(); 
     FetchProfile fp=new FetchProfile(); 
     fp.add(FetchProfile.Item.ENVELOPE); 
     folder.fetch(msgs, fp); 
     long time = System.currentTimeMillis(); 
     System.out.println("fetch: "+(time-ftime)); 
     for (Message message : msgs) { 
      System.out.println(message.getSubject()); 
      Address[] from = message.getFrom(); 
      for (Address address : from) { 
       System.out.println(address); 
      } 
      Address[] recipients = message.getAllRecipients(); 
      for (Address address : recipients) { 
       System.out.println(address); 
      } 

     } 
     long newTime = System.currentTimeMillis(); 
     System.out.println("convert: "+(newTime-time)); 
    }catch (Exception e) { 
     e.printStackTrace(); 
    } 


} 

回答

1

我不知道這是否是JAVAMAIL問題,它更可能是一個Gmail的問題。我有一個應用程序可以從多種來源(包括Gmail)中檢索郵件,Gmail絕對是最慢的。 Javamail api非常簡單,但如果沒有看到你現在正在做什麼,很難提出建議。

4

我相信Gmail會每隔一秒左右將IMAP消息讀取次數限制爲一次。您可以通過多個IMAP連接來加速它。