2009-08-28 8 views
0

J'utilise Java Mail API pour accéder à un compte Gmail (non corrigé). J'ai besoin de rechercher tous les mails pour un ID Mail donné(). La recherche devrait mettre fin à l'apparition d'abord le message avec ID donné (Optimisation: un seul courrier doit exister avec l'identifiant donné)Besoin d'un moyen de rechercher un ID de message mail à l'aide de imap

Je voudrais bien sûr voudrais sauter le dossier « Tous mail ».

La méthode la plus simple est de faire:

  1. Get dossier par défaut
  2. Obtenez tous les dossiers par défaut.
    1. Recherche par MessageIDTerm dans le dossier en cours
    2. si le message n'a pas été trouvé, répétez l'étape 2 récursive pour des sous-dossiers
    3. else return dossier trouvé.

Cela provoque beaucoup d'appels de serveur gaspillés qui ne sont pas nécessaires, ne quelqu'un a une approche plus optimale?

Répondre

0
folder.list("*"); 

C'est une méthode pour revenir récursive tous liste des dossiers. Donc je devrais exécuter seulement 1 boucle pour les dossiers !! Et bien sûr une boucle pour chaque message trouvé dans la recherche.

2

Il y a longtemps que je l'ai foiré avec tout ce genre de choses, mais vous devriez être en mesure de:

  • Utilisez la commande IMAP4 UID, qui recherche un identifiant donné (ou une plage de ids). Référence RFC3501, section 6.4.8
  • Utilisez-la avec le doCommand() sur l'objet IMAPFolder et récurrence dans vos dossiers si nécessaire.
Questions connexes