2010-03-29 2 views
4

J'utilise javamail pour récupérer des mails du serveur IMAP (actuellement GMail). Javamail récupère la liste des messages (seulement les identifiants) dans un dossier particulier du serveur très rapidement, mais quand je récupère réellement le message (enveloppe seulement pas même le contenu) cela prend environ 1 à 2 secondes pour chaque message. Quelles sont les techniques à utiliser pour une récupération rapide?Performance Javamail

voici mon code:

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(); 
    } 


} 

Répondre

1

Je ne sais pas si cela est une question Javamail autant qu'il peut être un problème Gmail. J'ai une application qui récupère le courrier d'un certain nombre de sources, y compris Gmail, et Gmail est certainement le plus lent. L'API de Javamail est assez simple, mais il serait difficile de faire des suggestions sans voir ce que vous êtes en train de faire.

4

Je crois que Gmail étrangle les lectures de message IMAP à un chaque seconde ou plus. Vous pourriez être en mesure de l'accélérer avec plusieurs connexions IMAP.