如何使用 JavaMail 获取邮件帐户中可用文件夹的列表
我正在使用 JavaMail API 连接到我的个人帐户。我在我创建的Gmail帐户中列出了文件夹(标签)+默认文件夹,如收件箱,草稿等。如何列出所有可用文件夹(默认文件夹和用户创建的文件夹)?
我可以使用此 API 访问特定文件夹:。是否有任何其他 API 可以获取邮件帐户中可用的文件夹列表?Folder inbox = store.getFolder("Inbox");
我正在使用 JavaMail API 连接到我的个人帐户。我在我创建的Gmail帐户中列出了文件夹(标签)+默认文件夹,如收件箱,草稿等。如何列出所有可用文件夹(默认文件夹和用户创建的文件夹)?
我可以使用此 API 访问特定文件夹:。是否有任何其他 API 可以获取邮件帐户中可用的文件夹列表?Folder inbox = store.getFolder("Inbox");
Sergey很接近,但默认情况下JavaMail做了一个,它只给你顶级文件夹。GMail将其系统文件夹(所有邮件,草稿,已发送邮件,垃圾邮件,已加星标和废纸篓)放在不可选择的文件夹下,因此您确实需要做一个。否则,您只需取回 、 和标签。list()
LIST "" %
[Gmail]
LIST "" *
INBOX
[Gmail]
下面是一些示例代码,用于连接到 GMail,获取文件夹列表,并打印出每个非文件夹(即不仅仅是层次结构占位符的名称和邮件计数,例如):\NoSelect
[Gmail]
Properties props = System.getProperties();
props.setProperty("mail.store.protocol", "imaps");
try {
Session session = Session.getDefaultInstance(props, null);
javax.mail.Store store = session.getStore("imaps");
store.connect("imap.gmail.com", "<username>@gmail.com", "<password>");
javax.mail.Folder[] folders = store.getDefaultFolder().list("*");
for (javax.mail.Folder folder : folders) {
if ((folder.getType() & javax.mail.Folder.HOLDS_MESSAGES) != 0) {
System.out.println(folder.getFullName() + ": " + folder.getMessageCount());
}
}
} catch (MessagingException e) {
e.printStackTrace();
}
下面是有效的代码。这将为您提供所有标签的处理。要更深入地了解 ,您可以执行 或 使用 检索所有文件夹和子文件夹,如其他答案中所示。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());
输出:
>>>>旅行
>>工作
>>的个人>>收据>>收件箱
[Gmail]
旧答案
请注意,这是不正确的,dkarp在这个答案中正确地指出了这一点
这些应该可以:
http://java.sun.com/products/javamail/javadocs/javax/mail/Store.html#getSharedNamespaces%28%29