2010-08-19 21 views
4

Dans Google Mail, je souhaite recevoir des messages auxquels plusieurs étiquettes ont été attribuées. Par exemple, si, dans la boîte de réception, nous avons trois e-mails:Comment utiliser JavaMail pour lire des e-mails contenant plusieurs libellés depuis Google Mail (Gmail)?

EMAIL_1 avec Label_A et Label_B

EMAIL_2 avec Label_A et Label_B

EMAIL_3 avec Label_A et Label_C

alors je veux choisir ceux qui Label_A et Label_B en même temps, qui sont Email_1 et Email_2. Actuellement, les codes suivants fonctionnent pour une situation en un seul label, mais existe-t-il un moyen de le faire avec plus d'une étiquette? Merci.


Properties props = System.getProperties(); 
Session session = Session.getInstance(props, null); 

Store store = session.getStore("imaps"); 
store.connect("imap.gmail.com", -1, "[email protected]", "password"); 

Folder folder = store.getDefaultFolder(); 

folder = folder.getFolder("Label_A"); 
folder.open(Folder.READ_WRITE);  

int totalMessages = folder.getMessageCount(); 
int newMessages = folder.getNewMessageCount(); 
System.out.println("Total messages = " + totalMessages); 
System.out.println("New messages = " + newMessages); 

+0

J'ai un problème très similaire. J'aimerais pouvoir dire qu'un message a deux étiquettes. Je peux facilement obtenir des messages à partir des deux dossiers, mais je ne suis pas sûr de la bonne façon de corréler les deux messages. – GreenKiwi

Répondre

2

Vous devriez être en mesure de faire quelque chose comme ceci:

private Store store; 
private Folder Label_A; 
private Folder Label_B; 
    ... 
     Label_A = store.getFolder("Label_A"); 
     Label_B = store.getFolder("Label_B"); 
+1

Comment corrélez-vous qu'un message est dans chacun d'eux? La séquence est différente, l'UID est différent et le MessageID ne peut pas être fiable pour être là ou être unique? – GreenKiwi

1

Je fini par avoir à écrire mes propres commandes IMAP brutes pour permettre javamail d'utiliser les extensions IMAP de Gmail. Alors ça marche.

Access to Gmail labels: X-GM-LABELS

Vous avez ensuite question: folder.doCommand() avec votre commande.