如Bill Shannon said,您可以使用Gmail属性获取special folders,如垃圾箱。但这只适用于Gmail。
javax.mail.Folder[] folders = store.getDefaultFolder().list("*");
如果打印这一点,它应该看起来像下面按Gmail
a004 LIST "" "*"
* LIST (\HasNoChildren) "/" "INBOX"
* LIST (\Noselect \HasChildren) "/" "[Gmail]"
* LIST (\HasNoChildren \All) "/" "[Gmail]/All Mail"
* LIST (\HasNoChildren \Drafts) "/" "[Gmail]/Drafts"
* LIST (\HasNoChildren \Important) "/" "[Gmail]/Important"
* LIST (\HasNoChildren \Sent) "/" "[Gmail]/Sent Mail"
* LIST (\HasNoChildren \Junk) "/" "[Gmail]/Spam"
* LIST (\HasNoChildren \Flagged) "/" "[Gmail]/Starred"
* LIST (\HasNoChildren \Trash) "/" "[Gmail]/Trash"
a004 OK Success
一旦你有你的文件夹,你可以重复你所寻找的属性。对于[Gmail]/All Mail
,mailFolder = "\\All"
。同样,对于[Gmail]/Trash
这将是mailFolder = "\\Trash"
private static IMAPFolder getLocalisedFolder(IMAPStore store, String mailFolder) throws MessagingException {
Folder[] folders = store.getDefaultFolder().list("*");
for (Folder folder : folders) {
IMAPFolder imapFolder = (IMAPFolder) folder;
for (String attribute : imapFolder.getAttributes()) {
if (mailFolder.equals(attribute)) {
return imapFolder;
}
}
}
return null;
}
有可能的是,Java不支持或分析的扩展字段。你能以某种方式手动发出命令吗?或者分叉javamail源来添加你需要的支持? – Max