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

Java编程

开发平台:

Java

  1.      JavaMail Servlet
  2.      ~~~~~~~~~~~~~~~~
  3. Overview:
  4. =========
  5. JavaMailServlet should not be taken as a demo of how to use the Java 
  6. Servlet API. It is rather an example of how the JavaMail APIs could 
  7. be used in a server in a three-tier environment described by the 
  8. following diagram:
  9. +-----------+        +-----------+        +-----------+
  10. |   IMAP    |        |           |        |           |
  11. |  Server   |<-IMAP->| JavaMail  |<-HTTP->|    WWW    |
  12. +-----------+        | Servlet   |--HTML->|  Browser  |
  13. |   SMTP    |<-SMTP->|           |        |           |
  14. |  Server   |        |           |        |           |
  15. +-----------+        +-----------+        +-----------+
  16. The JavaMailServlet supports the following functionality:
  17. * login to an IMAP server
  18. * list all the messages in the INBOX folder
  19. * view the selected message
  20. * compose and send a message
  21. Setting up and running the demo:
  22. ================================
  23. Note: These instructions explain how to compile and run the servlet 
  24. demo with Java Web Server (JWS). The procedure should be similar with 
  25. other web servers that support the Java Servlet API.
  26. 1. Download the latest version of the Java Web Server from
  27.    http://www.sun.com/software/jwebserver/index.html and
  28.    install according to the included documentation. Make
  29.    sure JWS is listening to requests on port 80 (you may 
  30.    need to modify it from default port 8080; use the JWS 
  31.    Admin Applet). Make sure you can load the Java Web 
  32.    Server welcome page when you connect with your browser 
  33.    to the machine that the server is installed on. Also,
  34.    make sure your web browser has cookie support turned on.
  35. 2. Set your classpath to include the following:
  36.     * mail.jar: in the JavaMail API distribution
  37.     * activation.jar: in the JAF distribution
  38.     * jws.jar: in the /lib/ directory in JWS installation
  39. 3. In javamail-1.1/demo/servlet directory, compile the 
  40.    JavaMailServlet.java file. That produces two class files,
  41.    JavaMailServlet.class and MailUserData.class. Copy these
  42.    class files to the /servlets/ directory in the JWS 
  43.    installation.
  44. 4. Copy the mail.jar and activation.jar to the /lib/
  45.    directory in the JWS installation.
  46. 5. Copy the JavaMail.html file to the /public_html/
  47.    directory in the JWS installation.
  48. 6. Restart Java Web Server to pick up the new jar files
  49.    added to its lib directory. Check again that you can
  50.    load the default JWS page to verify that the server
  51.    is working fine.
  52. 7. Using a web browser, go to 
  53.    http://<hostname>/JavaMail.html and login to a
  54.    valid IMAP account. From here on, you can view 
  55.    messages in your INBOX and create and send new 
  56.    messages.
  57. JavaMailServlet Design:
  58. =======================
  59. The following is a brief description of JavaMailServlet class. It
  60. is not intended to serve as an example of how to develop servlets;
  61. see http://java.sun.com/products/servlet for information on the Java
  62. Servlet API. You may find it useful to refer to JavaMailServlet.java
  63. source while reading this.
  64. The JavaMailServlet uses two primary methods to process all
  65. requests: doPost() and doGet(). doPost() processes submissions
  66. from the login and compose forms. When the user logs in, the
  67. doPost() method gets a JavaMail Session and uses the values
  68. of the "hostname", "username" and "password" parameters to login
  69. to the IMAP Store and get the INBOX Folder. To preserve state
  70. between multiple HTTP requests, the necessary information
  71. (Session, Store, Folder, URLName) are collected in the
  72. MailUserData object which is stored using JWS's Session
  73. technology (don't confuse HttpSession and JavaMail's Session--
  74. they are different). Finally, the doPost() method outputs 
  75. a table listing the INBOX and the number of messages in it.
  76. Clicking on the "INBOX" link calls the doGet() method
  77. which displays a table of message headers. (See the doGet() 
  78. and displayHeaders() methods.)
  79. Clicking on a message generates a request to the servlet with
  80. the message sequence number as a parameter. The doGet() method
  81. receives the request and calls the displayMessage() method 
  82. passing it the message sequence number to display. The 
  83. displayMessage() method first lists the message headers 
  84. by calling the displayMessageHeaders() utility method. 
  85. For text/plain messages, the message content is then displayed
  86. as a string wrapped in HTML <pre>...</pre> tags. For multipart 
  87. messages, each part is passed to the displayPart() method.
  88. There are two displayPart() methods. The one with signature
  89. displayPart(MailUserData mud, int msgNum, Part part, 
  90.     int partNum, HttpServletRequest req, 
  91.     ServletOutputStream out) 
  92. is called from the displayMessage() method for each part. For
  93. any part with text/plain content type, the content is output
  94. as a string wrapped in HTML <pre>...</pre> tags. For other
  95. content types, a link representing the part is displayed,
  96. along with the part filename and description, if available.
  97. Clicking in the part link generates a request to the servlet
  98. with two parameters: the message sequence number and the
  99. part number. The doGet() method interprets the parameters and 
  100. invokes the second displayPart() method with the signature 
  101. displayPart(MailUserData mud, int msgNum,
  102.             int partNum, ServletOutputStream out, 
  103.     HttpServletResponse res) 
  104. This method retrieves the specified part from the message and
  105. streams it to the web browser, preceded by the MIME content type 
  106. of this part. For example, if the part has a MIME type image/gif,
  107. the method will set the servlet response MIME content type to 
  108. "image/gif" and then follow it with the bytes of the actual 
  109. image. This leverages the web browser's content handling
  110. ability to display different media types.
  111. Message composition and sending is very similar to message
  112. viewing. When the "Compose" link is clicked in the headerlist
  113. page, the servlet outputs the HTML source for the compose
  114. form stored in the composeForm variable. The user then fills
  115. in the destination address, subject, text, and presses
  116. send. This sends a POST request to the servlet, which 
  117. invokes the doPost() method. doPost() calls the servlet's 
  118. send() method, which creates a new MimeMessage and fills 
  119. it with data retrieved from the POST request. The message
  120. is then sent to its destination using the Transport.send()
  121. static method.