public static String getMailboxInfo(String mail, String mailHost)
throws javax.mail.NoSuchProviderException, MessagingException, IOException, GeneralSecurityException, Exception {
String html = "
| Mailbox/Folder | Message Count | Size/Usage |
|---|---|---|
| " + me.getKey() + " | " + fn + " | " + fs + " MB |
return html;
}
private static class SASLMasqueradeAuthenticator extends Authenticator {
String authcid, authcpass;
public SASLMasqueradeAuthenticator(String adminusername, String adminpassword) {
authcid = adminusername;
authcpass = adminpassword;
}
protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication(authcid, authcpass);
}
}
static void dumpFolder(Folder folder, boolean recurse, String tab)
throws Exception, MessagingException {
if (folder.getType() == 2) {
if ((folder.getType() & Folder.HOLDS_FOLDERS) != 0) {
if (recurse) {
Folder[] f = folder.list();
for (int i = 0; i < f.length; i++) {
dumpFolder(f[i], recurse, tab + " ");
}
}
}
return;
}
folder.open(Folder.READ_ONLY);
Message messages[] = folder.getMessages();
// Tell JavaMail to do some pre-fetching of the usual cruft.
FetchProfile fp = new FetchProfile();
fp.add(FetchProfile.Item.ENVELOPE);
folder.fetch(messages, fp);
System.out.println(tab + "Name: " + folder.getName());
System.out.println(tab + "Full Name: " + folder.getFullName());
System.out.println(tab + "URL: " + folder.getURLName());
boolean verbose = true;
if (verbose) {
if (!folder.isSubscribed()) {
System.out.println(tab + "Not Subscribed");
}
if ((folder.getType() & Folder.HOLDS_MESSAGES) != 0) {
if (folder.hasNewMessages()) {
System.out.println(tab + "Has New Messages");
}
System.out.println(tab + "Total Messages: " +
folder.getMessageCount());
System.out.println(tab + "New Messages: " +
folder.getNewMessageCount());
System.out.println(tab + "Unread Messages: " +
folder.getUnreadMessageCount());
}
if ((folder.getType() & Folder.HOLDS_FOLDERS) != 0) {
System.out.println(tab + "Is Directory");
}
long folderSize = 0;
for (Message message : messages) {
folderSize += message.getSize();
}
long folderSizeMB = (folderSize / (1024L * 1024L));
System.out.printf("Folder Size in MB: %d\n", folderSizeMB);
FolderInfo fi = new FolderInfo(folder.getMessageCount(), folderSizeMB);
map.put(folder.getFullName(), fi);
/*
* Demonstrate use of IMAP folder attributes
* returned by the IMAP LIST response.
*/
if (folder instanceof IMAPFolder) {
IMAPFolder f = (IMAPFolder) folder;
String[] attrs = f.getAttributes();
if (attrs != null && attrs.length > 0) {
System.out.println(tab + "IMAP Attributes:");
for (int i = 0; i < attrs.length; i++) {
System.out.println(tab + " " + attrs[i]);
}
}
}
}
System.out.println();
if ((folder.getType() & Folder.HOLDS_FOLDERS) != 0) {
if (recurse) {
Folder[] f = folder.list();
for (int i = 0; i < f.length; i++) {
dumpFolder(f[i], recurse, tab + " ");
}
}
}
}
public static void main(String[] args) {
}
}
class ValueComparator implements Comparator {
Map base;
public ValueComparator(Map base) {
this.base = base;
}
public int compare(Object a, Object b) {
FolderInfo fa = (FolderInfo) base.get(a);
FolderInfo fb = (FolderInfo) base.get(b);
Long fsa = fa.folderSize;
Long fsb = fb.folderSize;
if ((Long) fsa < (Long) fsb) {
return 1;
} else if ((Long) fsa == (Long) fsb) {
return 1;
} else {
return -1;
}
}
}
class FolderInfo {
int folderNmsgs;
Long folderSize;
public FolderInfo(int i, Long l) {
this.folderNmsgs = i;
this.folderSize = l;
}
}

