看看这个例子吧。
/*
 * @(#)folderlist.java 1.22 98/06/10
 *
 * Copyright (c) 1996-1997 Sun Microsystems, Inc. All Rights Reserved.
 *
 */import java.util.Properties;
import javax.mail.*;/**
 * Demo app that exercises the Message interfaces.
 * List information about folders.
 *
 * @author John Mani
 * @author Bill Shannon
 */public class folderlist {
    static String protocol = null;
    static String host = null;
    static String user = null;
    static String password = null;
    static String root = null;
    static String pattern = "%";
    static boolean recursive = false;
    static boolean debug = false;    public static void main(String argv[]) throws Exception {
int optind;
for (optind = 0; optind < argv.length; optind++) {
    if (argv[optind].equals("-T")) {
protocol = argv[++optind];
    } else if (argv[optind].equals("-H")) {
host = argv[++optind];
    } else if (argv[optind].equals("-U")) {
user = argv[++optind];
    } else if (argv[optind].equals("-P")) {
password = argv[++optind];
    } else if (argv[optind].equals("-R")) {
root = argv[++optind];
    } else if (argv[optind].equals("-r")) {
recursive = true;
    } else if (argv[optind].equals("-D")) {
debug = true;
    } else if (argv[optind].equals("--")) {
optind++;
break;
    } else if (argv[optind].startsWith("-")) {
System.out.println(
"Usage: folderlist [-T protocol] [-H host] [-U user] [-P password]");
System.out.println(
"\t[-R root] [-r] [pattern]");
System.exit(1);
    } else {
break;
    }
}
if (optind < argv.length)
    pattern = argv[optind]; // Get a Properties object
Properties props = System.getProperties(); // Get a Session object
Session session = Session.getDefaultInstance(props, null);
session.setDebug(debug); // Get a Store object
Store store;
if (protocol != null)
    store = session.getStore(protocol);
else
    store = session.getStore(); // Connect
if (host != null || user != null || password != null)
    store.connect(host, user, password);
else
    store.connect(); // List namespace
Folder rf;
if (root != null)
    rf = store.getFolder(root);
else
    rf = store.getDefaultFolder();
Folder[] f = rf.list(pattern);
for (int i = 0; i < f.length; i++)
    dumpFolder(f[i], "");

store.close();
    }    static void dumpFolder(Folder folder, String tab) throws Exception {
     System.out.println(tab + "Name:      " + folder.getName());
System.out.println(tab + "Full Name: " + folder.getFullName());
System.out.println(tab + "URL:       " + folder.getURLName()); if (!folder.isSubscribed())
    System.out.println(tab + "Not Subscribed"); if (((folder.getType() & Folder.HOLDS_MESSAGES) != 0) && 
    folder.hasNewMessages())
    System.out.println(tab + "Has New Messages"); if ((folder.getType() & Folder.HOLDS_FOLDERS) != 0) {
    System.out.println(tab + "Is Directory");
    if (recursive) {
Folder[] f = folder.list();
for (int i=0; i < f.length; i++)
    dumpFolder(f[i], tab + "    ");
    }
}
    }
}