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

Java编程

开发平台:

Java

  1. /*
  2.  * @(#)monitor.java 1.8 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.*;
  39. import java.io.*;
  40. import javax.mail.*;
  41. import javax.mail.event.*;
  42. import javax.activation.*;
  43. /* Monitors given mailbox for new mail */
  44. public class monitor {
  45.     public static void main(String argv[])
  46.     {
  47. if (argv.length != 5) {
  48.       System.out.println("Usage: monitor <host> <user> <password> <mbox> <freq>");
  49.    System.exit(1);
  50. }
  51. System.out.println("nTesting monitorn");
  52.         try {
  53.     Properties props = System.getProperties();
  54.     // Get a Session object
  55.     Session session = Session.getInstance(props, null);
  56.     // session.setDebug(true);
  57.     // Get a Store object
  58.     Store store = session.getStore("imap");
  59.    // Connect
  60.     store.connect(argv[0], argv[1], argv[2]);
  61.    // Open a Folder
  62.     Folder folder = store.getFolder(argv[3]);
  63.     if (folder == null || !folder.exists()) {
  64. System.out.println("Invalid folder");
  65. System.exit(1);
  66.     }
  67.     folder.open(Folder.READ_WRITE);
  68.     // Add messageCountListener to listen for new messages
  69.     folder.addMessageCountListener(new MessageCountAdapter() {
  70. public void messagesAdded(MessageCountEvent ev) {
  71.     Message[] msgs = ev.getMessages();
  72.     System.out.println("Got " + msgs.length + " new messages");
  73.     // Just dump out the new messages
  74.     for (int i = 0; i < msgs.length; i++) {
  75. try {
  76.     DataHandler dh = msgs[i].getDataHandler();
  77.     InputStream is = dh.getInputStream();
  78.     int c;
  79.     while ((c = is.read()) != -1)
  80.   System.out.write(c); 
  81. } catch (IOException ioex) { 
  82.     ioex.printStackTrace();
  83. } catch (MessagingException mex) {
  84.     mex.printStackTrace();
  85. }
  86.     }
  87. }
  88.     });
  89.    // Check mail once in "freq" MILLIseconds
  90.     int freq = Integer.parseInt(argv[4]);
  91.     for (; ;) {
  92. Thread.sleep(freq); // sleep for freq milliseconds
  93. // This is to force the IMAP server to send us
  94. // EXISTS notifications. 
  95. folder.getMessageCount();
  96.     }
  97. } catch (Exception ex) {
  98.     ex.printStackTrace();
  99. }
  100.     }
  101. }