我正在使用JavaMail API连接到我的个人帐户。我在我创建的Gmail帐户中有文件夹(标签)列表+收件箱,草稿等默认文件夹。如何列出所有可用文件夹(默认和用户创建的文件夹)?
我可以使用此API访问特定文件夹:Folder inbox = store.getFolder("Inbox");
。是否有其他API可以获取邮件帐户中可用的文件夹列表?
答案 0 :(得分:61)
谢尔盖很接近,但默认情况下,JavaMail的list()
执行LIST "" %
,它只提供顶级文件夹。 GMail将其系统文件夹(所有邮件,草稿,已发邮件,垃圾邮件,已加星标和已删除邮件)放在不可选择的文件夹[Gmail]
下,因此您确实需要执行LIST "" *
。否则,您只需返回INBOX
,[Gmail]
和您的标签。
下面是一些连接到GMail的示例代码,获取文件夹列表,并打印出每个非\NoSelect
文件夹的名称和消息计数(即不仅仅是层次结构占位符的文件夹,如{{ 1}}):
[Gmail]
答案 1 :(得分:34)
这是有效的代码。这将使您处理所有标签。要更深入folder
,您可以执行folder.list()
,也可以使用store.getDefaultFolder().list("*")
检索所有文件夹和子文件夹,如其他答案所示。
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", "YOURMAILID@gmail.com", "UR_P@ZZWRD");
System.out.println(store);
Folder[] f = store.getDefaultFolder().list();
for(Folder fd:f)
System.out.println(">> "+fd.getName());
输出:
>> INBOX
>>个人
>>收据
>>旅行
>>工作
>>的[Gmail]
OLD ANSWER
请注意这是不正确的,this answer dkarp正确地指出了http://java.sun.com/products/javamail/javadocs/javax/mail/Store.html#getSharedNamespaces%28%29
这些应该:
{{3}}
答案 2 :(得分:7)
您可以访问此类其他文件夹
store.getFolder("[Gmail]/Sent Mail");
store.getFolder("[Gmail]/Drafts");
等
答案 3 :(得分:0)
store.getDefaultFolder().list()
怎么样?不过只是一个猜测。
答案 4 :(得分:0)
您可以尝试以下方法:
Folder[] folderList = store.getDefaultFolder().list("*");