Jagadesh Jagadesh - 1 year ago 75
Java Question

How to get the list of available folders in a mail account using JavaMail

I am using JavaMail API to connect to my personal account. I have list of folders (labels) in my Gmail account which I created + the default folders like Inbox, Drafts etc. How can I list all the available folders (the default and the user created)?

I can access the particular folder using this API:

Folder inbox = store.getFolder("Inbox");
. Is there any other API to get the list of folders available in a mail account?

Answer Source

Here is the code that works. This will give you handle to all the Labels. To go deeper in a folder, you may perform folder.list() or you can use store.getDefaultFolder().list("*") to retrieve all the folders and sub-folders as suggested in the other answer.

Properties props = System.getProperties();
props.setProperty("mail.store.protocol", "imaps");
Session session = Session.getDefaultInstance(props, null);
Store store = session.getStore("imaps");
store.connect("imap.gmail.com", "[email protected]", "[email protected]");
System.out.println(store);

Folder[] f = store.getDefaultFolder().list();
for(Folder fd:f)
    System.out.println(">> "+fd.getName());

Output:

>> INBOX
>> Personal
>> Receipts
>> Travel
>> Work
>> [Gmail]


OLD ANSWER

Please note this is not correct, it's rightly pointed in this answer by dkarp

These should do:

http://java.sun.com/products/javamail/javadocs/javax/mail/Store.html#getSharedNamespaces%28%29

http://java.sun.com/products/javamail/javadocs/javax/mail/Store.html#getUserNamespaces%28java.lang.String%29

Recommended from our users: Dynamic Network Monitoring from WhatsUp Gold from IPSwitch. Free Download