This demo illustrates the use of JavaMail APIs in a 3-tiered web
application. It must be deployed on a web server that supports
servlet and JSP-based web applications (e.g. Tomcat) using at least
J2SE 1.3 and Servlet 2.2.
+-----------+ +-----------+ +-----------+
| IMAP | | | | |
| Server |<-IMAP->| JavaMail |<-HTTP->| WWW |
+-----------+ | Web app |--HTML->| Browser |
| SMTP |<-SMTP->| | | |
| Server | | | | |
+-----------+ +-----------+ +-----------+
The JavaMail Web application supports the following functionality:
* login to an IMAP server
* list all the messages in the INBOX folder
* view the selected message
* compose and send a message
It is comprised of an HTML document and several Web components
(servlets, JSP pages and custom tags) and is packaged in a Web
archive with the following contents:
index.html
login.jsp
folders.jsp
messageheaders.jsp
messagecontent.jsp
compose.jsp
send.jsp
errorpage.jsp
errordetails.jsp
logout.jsp
WEB-INF/
WEB-INF/classes/
WEB-INF/classes/demo/AttachmentServlet.class
WEB-INF/classes/demo/FilterServlet.class
WEB-INF/classes/demo/MailUserBean.class
WEB-INF/lib/
WEB-INF/lib/jtl.jar
WEB-INF/web.xml
The collection of .html and .jsp files provide the client-side view
of the JavaMail Web application.
index.html
|
login.jsp
|
folders.jsp
|
messageheaders.jsp
|
/ \
/ \
compose.jsp messagecontent.jsp
|
send.jsp
The WEB-INF/web.xml file contains the web applications deployment
descriptor. It is an XML document that contains configuration and
deployment information for the application.
As per the Servlet specification, the WEB-INF/classes directory
contains servlet and utility classes used by the web application.
The FilterServlet acts as the Controller of the JavaMail Web
application. All requests are mapped to this servlet. It checks
to see that the user is logged in to the server before forwarding the
request to the appropriate JSP page. The AttachmentServlet is used
to render non-text attachments and the MailUserBean is a utility class
used to maintain information about the mail user.
The WEB-INF/lib directory (also defined in the Servlet specification)
contains the Java archive file for the javamail custom tag library.
The follow tags are furnished in the javamail tag library:
body of the message
Description: Used to send messages.
Description: Used to read a single message.
Description: Used to iterate through list of messages. The body of the
tag is repeated for each message in the list.
Building and Packaging the JavaMail Web application
All source for this demo can be found in the following directories:
src/classes
src/docroot
src/taglib
Build scripts (build.sh and build.bat) are provided for building and
packaging the demo. Before executing the build scripts, be sure that
the following are in your CLASSPATH:
mail.jar the JavaMail jar file
activation.jar the JAF jar file
servlet.jar the servlet/JSP jar file
The following steps are performed when building and packaging the demo.
1. Create a directory named "src/docroot/WEB-INF/classes/demo".
2. Create a directory named "src/docroot/WEB-INF/lib".
3. Compile the files from the "src/classes/demo" directory and add them
to "src/docroot/WEB-INF/classes/demo".
4. Compile the files from the "src/tablib" directory.
5. Create an archive (jtl.jar) of the taglib classes and add it
to "src/docroot/WEB-INF/lib".
6. Create a web archive file of the contents of "src/docroot" (and all
of its sub-directories).
(For a list of the contents of the resulting web archive,
see the beginning of this document.)
A note on sending mail
In order to send mail using the JavaMail Web App, it is necessary to identify
an SMTP host. This can be accomplished in a couple of ways.
1. Use the TOMCAT_OPTS environment variable.
Add the following to the TOMCAT_OPTS environment variable:
-Dmail.smtp.host=yourSMTPmailservername
Restart your web server.
2. Modify the send.jsp file and update the javamail.war file:
Add the following parameter to the tag:
host="yourSMTPmailservername"
Repackage the javamail.war file to include the modified send.jsp file.