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

Java编程

开发平台:

Java

  1. /*
  2.  * @(#)MessageInfo.java 1.4 02/04/04
  3.  *
  4.  * Copyright 2001-2002 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.  */
  39. package demo;
  40. import java.text.*;
  41. import java.util.*;
  42. import javax.mail.*;
  43. import javax.mail.internet.*;
  44. /**
  45.  * Used to store message information.
  46.  */
  47. public class MessageInfo {
  48.     private Message message;
  49.     
  50.     
  51.     /**
  52.      * Returns the bcc field.
  53.      */
  54.     public String getBcc() throws MessagingException {
  55.         return formatAddresses(
  56.             message.getRecipients(Message.RecipientType.BCC));
  57.     }
  58.     
  59.     /**
  60.      * Returns the body of the message (if it's plain text).
  61.      */
  62.     public String getBody() throws MessagingException, java.io.IOException {
  63.         Object content = message.getContent();
  64.         if (message.isMimeType("text/plain")) {
  65.             return (String)content;
  66.         } else if (message.isMimeType("multipart/alternative")) {
  67.     Multipart mp = (Multipart)message.getContent();
  68.             int numParts = mp.getCount();
  69.             for (int i = 0; i < numParts; ++i) {
  70.                 if (mp.getBodyPart(i).isMimeType("text/plain"))
  71.                     return (String)mp.getBodyPart(i).getContent();
  72.             }
  73.             return "";   
  74.         } else if (message.isMimeType("multipart/*")) { 
  75.     Multipart mp = (Multipart)content;
  76.             if (mp.getBodyPart(0).isMimeType("text/plain"))
  77.                 return (String)mp.getBodyPart(0).getContent();
  78.             else
  79.                 return "";
  80.         } else
  81.             return "";
  82.     }
  83.     
  84.     /**
  85.      * Returns the cc field.
  86.      */
  87.     public String getCc() throws MessagingException {
  88.         return formatAddresses(
  89.             message.getRecipients(Message.RecipientType.CC));
  90.     }
  91.     
  92.     /**
  93.      * Returns the date the message was sent (or received if the sent date
  94.      * is null.
  95.      */
  96.     public String getDate() throws MessagingException {
  97.         Date date;
  98.         SimpleDateFormat df = new SimpleDateFormat("EE M/d/yy");
  99.         if ((date = message.getSentDate()) != null)
  100.             return (df.format(date));
  101.         else if ((date = message.getReceivedDate()) != null)
  102.             return (df.format(date));
  103.         else
  104.             return "";
  105.      }
  106.        
  107.     /**
  108.      * Returns the from field.
  109.      */
  110.     public String getFrom() throws MessagingException {
  111.         return formatAddresses(message.getFrom());
  112.     }
  113.     /**
  114.      * Returns the address to reply to.
  115.      */
  116.     public String getReplyTo() throws MessagingException {
  117. Address[] a = message.getReplyTo();
  118. if (a.length > 0)
  119.     return ((InternetAddress)a[0]).getAddress();
  120. else
  121.     return "";
  122.     }
  123.     
  124.     /**
  125.      * Returns the javax.mail.Message object.
  126.      */
  127.     public Message getMessage() {
  128.         return message;
  129.     }
  130.     
  131.     /**
  132.      * Returns the message number.
  133.      */
  134.     public String getNum() {
  135.         return (Integer.toString(message.getMessageNumber()));
  136.     }
  137.     
  138.     /**
  139.      * Returns the received date field.
  140.      */
  141.     public String getReceivedDate() throws MessagingException {
  142.         if (hasReceivedDate())
  143.             return (message.getReceivedDate().toString());
  144.         else
  145.             return "";
  146.     }
  147.     
  148.     /**
  149.      * Returns the sent date field.
  150.      */
  151.     public String getSentDate() throws MessagingException {
  152.         if (hasSentDate())
  153.             return (message.getSentDate().toString()); 
  154.         else
  155.             return "";
  156.     }
  157.     
  158.     /**
  159.      * Returns the subject field.
  160.      */
  161.     public String getSubject() throws MessagingException {
  162.         if (hasSubject())
  163.             return message.getSubject();
  164.         else
  165.             return "";
  166.     }
  167.     
  168.     /**
  169.      * Returns the to field.
  170.      */
  171.     public String getTo() throws MessagingException {
  172.         return formatAddresses(
  173.             message.getRecipients(Message.RecipientType.TO));
  174.     }
  175.     
  176.     /**
  177.      * Method for checking if the message has attachments.
  178.      */
  179.     public boolean hasAttachments() throws java.io.IOException, 
  180.                                            MessagingException {
  181.         boolean hasAttachments = false;
  182.         if (message.isMimeType("multipart/*")) {
  183.     Multipart mp = (Multipart)message.getContent();
  184.             if (mp.getCount() > 1)
  185.                 hasAttachments = true;
  186.         }
  187.             
  188.         return hasAttachments;
  189.     }
  190.     
  191.     /**
  192.      * Method for checking if the message has a bcc field.
  193.      */
  194.     public boolean hasBcc() throws MessagingException {
  195.         return (message.getRecipients(Message.RecipientType.BCC) != null);
  196.     }
  197.     
  198.     /**
  199.      * Method for checking if the message has a cc field.
  200.      */
  201.     public boolean hasCc() throws MessagingException {
  202.         return (message.getRecipients(Message.RecipientType.CC) != null);
  203.     }
  204.     
  205.     /**
  206.      * Method for checking if the message has a date field.
  207.      */
  208.     public boolean hasDate() throws MessagingException {
  209.         return (hasSentDate() || hasReceivedDate());
  210.     }
  211.     
  212.     /**
  213.      * Method for checking if the message has a from field.
  214.      */
  215.     public boolean hasFrom() throws MessagingException {
  216.         return (message.getFrom() != null);
  217.     }
  218.     
  219.     /**
  220.      * Method for checking if the message has the desired mime type.
  221.      */
  222.     public boolean hasMimeType(String mimeType) throws MessagingException {
  223.         return message.isMimeType(mimeType);
  224.     }
  225.     
  226.     /**
  227.      * Method for checking if the message has a received date field.
  228.      */
  229.     public boolean hasReceivedDate() throws MessagingException {
  230.         return (message.getReceivedDate() != null);
  231.     }
  232.     
  233.     /**
  234.      * Method for checking if the message has a sent date field.
  235.      */
  236.     public boolean hasSentDate() throws MessagingException {
  237.         return (message.getSentDate() != null);
  238.     }
  239.     
  240.     /**
  241.      * Method for checking if the message has a subject field.
  242.      */
  243.     public boolean hasSubject() throws MessagingException {
  244.         return (message.getSubject() != null);
  245.     }
  246.     
  247.     /**
  248.      * Method for checking if the message has a to field.
  249.      */
  250.     public boolean hasTo() throws MessagingException {
  251.         return (message.getRecipients(Message.RecipientType.TO) != null);
  252.     }
  253.     
  254.     /**
  255.      * Method for mapping a message to this MessageInfo class.
  256.      */
  257.     public void setMessage(Message message) {
  258.         this.message = message;
  259.     }
  260.     /**
  261.      * Utility method for formatting msg header addresses.
  262.      */
  263.     private String formatAddresses(Address[] addrs) {
  264.         if (addrs == null)
  265.             return "";
  266.         StringBuffer strBuf = new StringBuffer(getDisplayAddress(addrs[0]));
  267.         for (int i = 1; i < addrs.length; i++) {
  268.             strBuf.append(", ").append(getDisplayAddress(addrs[i]));
  269.         }
  270.         return strBuf.toString();
  271.     }
  272.     
  273.     /**
  274.      * Utility method which returns a string suitable for msg header display.
  275.      */
  276.     private String getDisplayAddress(Address a) {
  277.         String pers = null;
  278.         String addr = null;
  279.         if (a instanceof InternetAddress &&
  280.            ((pers = ((InternetAddress)a).getPersonal()) != null)) {
  281.     addr = pers + "  "+"&lt;"+((InternetAddress)a).getAddress()+"&gt;";
  282.         } else 
  283.             addr = a.toString();
  284.         return addr;
  285.     }
  286. }