folderlist.java
上传用户:dinglihq
上传日期:2013-02-04
资源大小:99958k
文件大小:5k
源码类别:

Java编程

开发平台:

Java

  1. /*
  2.  * @(#)folderlist.java 1.29 03/04/22
  3.  *
  4.  * Copyright 1996-2003 Sun Microsystems, Inc. All Rights Reserved.
  5.  *
  6.  * Redistribution and use in source and binary forms, with or without
  7.  * modification, are permitted provided that the following conditions
  8.  * are met:
  9.  * 
  10.  * - Redistributions of source code must retain the above copyright
  11.  *   notice, this list of conditions and the following disclaimer.
  12.  * 
  13.  * - Redistribution in binary form must reproduce the above copyright
  14.  *   notice, this list of conditions and the following disclaimer in the
  15.  *   documentation and/or other materials provided with the distribution.
  16.  * 
  17.  * Neither the name of Sun Microsystems, Inc. or the names of contributors
  18.  * may be used to endorse or promote products derived from this software
  19.  * without specific prior written permission.
  20.  * 
  21.  * This software is provided "AS IS," without a warranty of any kind. ALL
  22.  * EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND WARRANTIES,
  23.  * INCLUDING ANY IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A
  24.  * PARTICULAR PURPOSE OR NON-INFRINGEMENT, ARE HEREBY EXCLUDED. SUN AND
  25.  * ITS LICENSORS SHALL NOT BE LIABLE FOR ANY DAMAGES OR LIABILITIES
  26.  * SUFFERED BY LICENSEE AS A RESULT OF  OR RELATING TO USE, MODIFICATION
  27.  * OR DISTRIBUTION OF THE SOFTWARE OR ITS DERIVATIVES. IN NO EVENT WILL
  28.  * SUN OR ITS LICENSORS BE LIABLE FOR ANY LOST REVENUE, PROFIT OR DATA, OR
  29.  * FOR DIRECT, INDIRECT, SPECIAL, CONSEQUENTIAL, INCIDENTAL OR PUNITIVE
  30.  * DAMAGES, HOWEVER CAUSED AND REGARDLESS OF THE THEORY OF LIABILITY,
  31.  * ARISING OUT OF THE USE OF OR INABILITY TO USE SOFTWARE, EVEN IF SUN HAS
  32.  * BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
  33.  * 
  34.  * You acknowledge that Software is not designed, licensed or intended
  35.  * for use in the design, construction, operation or maintenance of any
  36.  * nuclear facility.
  37.  */
  38. import java.util.Properties;
  39. import javax.mail.*;
  40. /**
  41.  * Demo app that exercises the Message interfaces.
  42.  * List information about folders.
  43.  *
  44.  * @author John Mani
  45.  * @author Bill Shannon
  46.  */
  47. public class folderlist {
  48.     static String protocol = null;
  49.     static String host = null;
  50.     static String user = null;
  51.     static String password = null;
  52.     static String url = null;
  53.     static String root = null;
  54.     static String pattern = "%";
  55.     static boolean recursive = false;
  56.     static boolean verbose = false;
  57.     static boolean debug = false;
  58.     public static void main(String argv[]) throws Exception {
  59. int optind;
  60. for (optind = 0; optind < argv.length; optind++) {
  61.     if (argv[optind].equals("-T")) {
  62. protocol = argv[++optind];
  63.     } else if (argv[optind].equals("-H")) {
  64. host = argv[++optind];
  65.     } else if (argv[optind].equals("-U")) {
  66. user = argv[++optind];
  67.     } else if (argv[optind].equals("-P")) {
  68. password = argv[++optind];
  69.     } else if (argv[optind].equals("-L")) {
  70. url = argv[++optind];
  71.     } else if (argv[optind].equals("-R")) {
  72. root = argv[++optind];
  73.     } else if (argv[optind].equals("-r")) {
  74. recursive = true;
  75.     } else if (argv[optind].equals("-v")) {
  76. verbose = true;
  77.     } else if (argv[optind].equals("-D")) {
  78. debug = true;
  79.     } else if (argv[optind].equals("--")) {
  80. optind++;
  81. break;
  82.     } else if (argv[optind].startsWith("-")) {
  83. System.out.println(
  84. "Usage: folderlist [-T protocol] [-H host] [-U user] [-P password] [-L url]");
  85. System.out.println(
  86. "t[-R root] [-r] [-v] [-D] [pattern]");
  87. System.exit(1);
  88.     } else {
  89. break;
  90.     }
  91. }
  92. if (optind < argv.length)
  93.     pattern = argv[optind];
  94. // Get a Properties object
  95. Properties props = System.getProperties();
  96. // Get a Session object
  97. Session session = Session.getInstance(props, null);
  98. session.setDebug(debug);
  99. // Get a Store object
  100. Store store = null;
  101. Folder rf = null;
  102. if (url != null) {
  103.     URLName urln = new URLName(url);
  104.     store = session.getStore(urln);
  105.     store.connect();
  106. } else {
  107.     if (protocol != null)
  108. store = session.getStore(protocol);
  109.     else
  110. store = session.getStore();
  111.     // Connect
  112.     if (host != null || user != null || password != null)
  113. store.connect(host, user, password);
  114.     else
  115. store.connect();
  116. }
  117. // List namespace
  118. if (root != null)
  119.     rf = store.getFolder(root);
  120. else
  121.     rf = store.getDefaultFolder();
  122. dumpFolder(rf, false, "");
  123. if ((rf.getType() & Folder.HOLDS_FOLDERS) != 0) {
  124.     Folder[] f = rf.list(pattern);
  125.     for (int i = 0; i < f.length; i++)
  126. dumpFolder(f[i], recursive, "    ");
  127. }
  128. store.close();
  129.     }
  130.     static void dumpFolder(Folder folder, boolean recurse, String tab)
  131. throws Exception {
  132.      System.out.println(tab + "Name:      " + folder.getName());
  133. System.out.println(tab + "Full Name: " + folder.getFullName());
  134. System.out.println(tab + "URL:       " + folder.getURLName());
  135. if (verbose) {
  136.     if (!folder.isSubscribed())
  137. System.out.println(tab + "Not Subscribed");
  138.     if ((folder.getType() & Folder.HOLDS_MESSAGES) != 0) {
  139. if (folder.hasNewMessages())
  140.     System.out.println(tab + "Has New Messages");
  141. System.out.println(tab + "Total Messages:  " +
  142. folder.getMessageCount());
  143. System.out.println(tab + "New Messages:    " +
  144. folder.getNewMessageCount());
  145. System.out.println(tab + "Unread Messages: " +
  146. folder.getUnreadMessageCount());
  147.     }
  148.     if ((folder.getType() & Folder.HOLDS_FOLDERS) != 0)
  149. System.out.println(tab + "Is Directory");
  150. }
  151. System.out.println();
  152. if ((folder.getType() & Folder.HOLDS_FOLDERS) != 0) {
  153.     if (recurse) {
  154. Folder[] f = folder.list();
  155. for (int i = 0; i < f.length; i++)
  156.     dumpFolder(f[i], recurse, tab + "    ");
  157.     }
  158. }
  159.     }
  160. }