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

Java编程

开发平台:

Java

  1. package bible.javamail;
  2. import java.io.*;
  3. import javax.servlet.*;
  4. import javax.servlet.http.*;
  5. import java.util.*;
  6. import java.text.*;
  7. import javax.activation.*;
  8. import javax.mail.*;
  9. import javax.mail.internet.*;
  10. import javax.naming.*;
  11. /**
  12.  * Class DisplayMessages
  13.  *
  14.  *
  15.  * @author
  16.  * @version %I%, %G%
  17.  */
  18. public class DisplayMessages extends HttpServlet {
  19.   private PrintWriter pw;
  20.   private Session     session;
  21.   private Store       store;
  22.   private Folder      defaultFolder;
  23.   private Folder      folder;
  24.   private String      folderName;
  25.   private Message     message;
  26.   /**
  27.    * Method doGet
  28.    *
  29.    *
  30.    * @param req
  31.    * @param res
  32.    *
  33.    * @throws IOException
  34.    * @throws ServletException
  35.    *
  36.    */
  37.   public void doGet(HttpServletRequest req, HttpServletResponse res)
  38.     throws ServletException, IOException {
  39.     pw = res.getWriter();
  40.     res.setContentType("text/html");
  41.     folderName = req.getParameter("folder");
  42.     pw.println("<HTML><HEAD><TITLE>Messages</TITLE></HEAD>");
  43.     pw.println("<BODY><H1>Messages</H1>");
  44.     try {
  45.       getDefaultFolder();
  46.       displayMessages(folderName);
  47.     } catch (Exception e) {
  48.       pw.println("<BR><BR><STRONG>" + e.getMessage() + "</STRONG><BR>");
  49.       e.printStackTrace(pw);
  50.     }
  51.     pw.println("</BODY></HTML>");
  52.   }
  53.   private void getDefaultFolder()
  54.     throws NamingException, NoSuchProviderException, MessagingException {
  55.     // lookup mail session in JNDI
  56.     InitialContext context = new InitialContext();
  57.     Session        session = (Session) context.lookup("BibleMailSession");
  58.     // get store and create an authenticated session
  59.     store = session.getStore();
  60.     store.connect("xxx.xxx.xxx.xxx", "username", "password");
  61.     // get the default folder
  62.     defaultFolder = store.getDefaultFolder();
  63.   }
  64.   private void displayMessages(String folderName)
  65.     throws MessagingException, IOException {
  66.     pw.println("<A HREF='sendmail2'>Compose Message</A><BR>");
  67.     pw.println("<H3>Folder: " + folderName + "</H3>");
  68.     folder = defaultFolder.getFolder(folderName);
  69.     folder.open(Folder.READ_ONLY);
  70.     Message[] messages = folder.getMessages();
  71.     if (messages.length > 0) {
  72.       pw.println("<TABLE width='100%'>");
  73.       pw.println("<TR><TD><STRONG>From</STRONG></TD>");
  74.       pw.println("<TD><STRONG>Subject</STRONG></TD>");
  75.       pw.println("<TD><STRONG>Received</STRONG></TD>");
  76.       pw.println("<TD><STRONG>Size</STRONG></TD>");
  77.       pw.println("<TD><STRONG>Enclosure</STRONG></TD>");
  78.       pw.println("<TD><STRONG>Seen</STRONG></TD></TR>");
  79.       // loop through messages
  80.       for (int i = 0; i < messages.length; i++) {
  81.         // skip deleted messages
  82.         if (!messages [i].isSet(Flags.Flag.DELETED)) {
  83.           message = messages [i];
  84.           pw.println("<TR><TD>" + getFrom() + "</TD>");
  85.           String subject = ("".equals(getSubject())
  86.                             ? "None"
  87.                             : getSubject());
  88.           pw.println("<TD><A HREF='message?cmd=display&folder=" + folderName
  89.                      + "&msgid=" + getMessageNumber() + "'>" + subject
  90.                      + "</A></TD>");
  91.           pw.println("<TD>" + getReceived() + "</TD>");
  92.           pw.println("<TD>" + getSize() + "</TD>");
  93.           pw.println("<TD>" + hasEnclosure() + "</TD>");
  94.           pw.println("<TD>" + hasBeenSeen() + "</TD></TR>");
  95.         }
  96.       }
  97.       pw.println("</TABLE>");
  98.       folder.close(false);
  99.       store.close();
  100.     }
  101.   }
  102.   /**
  103.    * Method getFrom
  104.    *
  105.    *
  106.    * @return
  107.    *
  108.    * @throws MessagingException
  109.    *
  110.    */
  111.   public String getFrom() throws MessagingException {
  112.     Address[] addresses = message.getFrom();
  113.     return addresses [0].toString();
  114.   }
  115.   /**
  116.    * Method getSubject
  117.    *
  118.    *
  119.    * @return
  120.    *
  121.    * @throws MessagingException
  122.    *
  123.    */
  124.   public String getSubject() throws MessagingException {
  125.     return message.getSubject();
  126.   }
  127.   /**
  128.    * Method getMessageNumber
  129.    *
  130.    *
  131.    * @return
  132.    *
  133.    * @throws MessagingException
  134.    *
  135.    */
  136.   public int getMessageNumber() throws MessagingException {
  137.     return message.getMessageNumber();
  138.   }
  139.   /**
  140.    * Method getReceived
  141.    *
  142.    *
  143.    * @return
  144.    *
  145.    * @throws MessagingException
  146.    *
  147.    */
  148.   public String getReceived() throws MessagingException {
  149.     String date         = "";
  150.     Date   receivedDate = message.getReceivedDate();
  151.     if (receivedDate != null) {
  152.       date =
  153.         DateFormat.getDateTimeInstance(DateFormat.MEDIUM,
  154.                                        DateFormat.SHORT).format(receivedDate);
  155.     }
  156.     return date;
  157.   }
  158.   private String getSize() throws MessagingException {
  159.     int    size     = message.getSize();
  160.     String sizeDesc = size + " B";
  161.     if (size >= 1024) {
  162.       size     /= 1024;
  163.       sizeDesc = size + " KB";
  164.       if (size >= 1024) {
  165.         size     /= 1024;
  166.         sizeDesc = size + " MB";
  167.       }
  168.     }
  169.     return sizeDesc;
  170.   }
  171.   private boolean hasEnclosure() throws MessagingException, IOException {
  172.     boolean b = false;
  173.     if (message.isMimeType("multipart/*")) {
  174.       Multipart mp    = (Multipart) message.getContent();
  175.       int       count = mp.getCount();
  176.       for (int j = 0; j < count; j++) {
  177.         BodyPart bp = mp.getBodyPart(j);
  178.         if (bp.getFileName() != null) {
  179.           b = true;
  180.         }
  181.       }
  182.     }
  183.     return b;
  184.   }
  185.   private boolean hasBeenSeen() throws MessagingException {
  186.     boolean b = false;
  187.     if (message.isSet(Flags.Flag.SEEN)) {
  188.       b = true;
  189.     }
  190.     return b;
  191.   }
  192. }
  193. /*--- Formatted in Bible Style on Thu, Sep 6, '01 ---*/
  194. /*------ Formatted by Jindent 3.24 Gold 1.02 --- http://www.jindent.de ------*/