Package webmail

Source Code of webmail.MailServlet

package webmail;

import java.io.IOException;
import java.text.SimpleDateFormat;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.servlet.ServletException;
import javax.servlet.ServletOutputStream;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpUtils;
import org.runningman.mailutilities.BufferedMessage;
import org.runningman.mailutilities.Credentials;
import org.runningman.mailutilities.MailConnector;

@WebServlet(name = "MailServlet", urlPatterns = {"/mail"})
public class MailServlet extends HttpServlet {
        private MailConnector connector;
        private Message[] messages;

        /**
         * This method handles the "POST" submission from two forms: the login
         * form and the message compose form. The login form has the following
         * parameters:
         * <code>hostname</code>,
         * <code>username</code>, and
         * <code>password</code>. The
         * <code>send</code> parameter denotes that the method is processing the
         * compose form submission.
         */
        @Override
        public void doPost(HttpServletRequest req, HttpServletResponse res)
                throws ServletException, IOException {

                Credentials credentials = new Credentials();
                String host = req.getParameter("hostname");
                credentials.setHost(host);
                String user = req.getParameter("username");
                credentials.setUser(user);
                String password = req.getParameter("password");
                credentials.setPassword(password);
                credentials.setPort(993);

                ServletOutputStream out = res.getOutputStream();
                res.setContentType("text/html");
                res.setCharacterEncoding("UTF-8");
                out.println("<html><body bgcolor=\"#CCCCFF\">");

                try {
                        this.connector = new MailConnector();
                        this.connector.setCredentials(credentials);
                        this.connector.setFolder("inbox");
                        this.connector.connect();
                        this.messages = this.connector.retrieveUnreadMessages();
                        int totalMessages = messages.length;
                        // splash
                        out.print("<center>");
                        out.print("<font face=\"Arial,Helvetica\" font size=+3>");
                        out.println("<b>Welcome to JavaMail Demo program!</b></font></center><p>");
                        // folder table
                        out.println("<table width=\"50%\" border=0 align=center>");
                        // folder name column header
                        out.print("<tr><td width=\"75%\" bgcolor=\"#ffffcc\">");
                        out.print("<font face=\"Arial,Helvetica\" font size=-1>");
                        out.println("<b>FolderName</b></font></td><br>");
                        // msg count column header
                        out.print("<td width=\"25%\" bgcolor=\"#ffffcc\">");
                        out.print("<font face=\"Arial,Helvetica\" font size=-1>");
                        out.println("<b>Messages</b></font></td><br>");
                        out.println("</tr>");
                        // folder name
                        out.print("<tr><td width=\"75%\" bgcolor=\"#ffffff\">");
                        out.print("<a href=\"" + HttpUtils.getRequestURL(req) + "\">" +
        "Inbox" + "</a></td><br>");
                        // msg count
                        out.println("<td width=\"25%\" bgcolor=\"#ffffff\">"
                                + totalMessages + "</td>");
                        out.println("</tr>");
                        out.println("</table");
                } catch (Exception ex) {
                        out.println(ex.toString());
                        ex.printStackTrace();
                } finally {
                        out.println("</body></html>");
                        out.close();
                }
        }

        /**
         * This method handles the GET requests for the client.
         */
        @Override
        public void doGet(HttpServletRequest req, HttpServletResponse res)
                throws ServletException, IOException {

                ServletOutputStream out = res.getOutputStream();
                // get url parameters
                String msgStr = req.getParameter("message");
                String logout = req.getParameter("logout");
                String part = req.getParameter("part");
                int msgNum = -1;
                int partNum = -1;

                // process url params
                if (msgStr != null) {
                        // operate on message "msgStr"
                        msgNum = Integer.parseInt(msgStr);

                        if (part == null) {
                                // display message "msgStr"
                                res.setContentType("text/html");
                                res.setCharacterEncoding("UTF-8");
                                displayMessage(req, out, msgNum);
                        }

                } else if (logout != null) {
                        // process logout
                        try {
                                this.connector.disconnect();
                                out.println("<html><body>Logged out OK</body></html>");
                        } catch (MessagingException mex) {
                                out.println(mex.toString());
                        }

                } else {
                        // display headers
                        displayHeaders(out);
                }
        }

        /* main method to display messages */
        private void displayMessage(HttpServletRequest req,
                ServletOutputStream out, int msgNum)
                throws IOException {
                out.println("<html>");
                out.println("<HEAD><META HTTP-EQUIV=\"Content-Type\" CONTENT=\"text/html;CHARSET=utf-8\"><TITLE>JavaMail Servlet</TITLE></HEAD>");
                out.println("<BODY bgcolor=\"#ccccff\">");
                out.print("<center><font face=\"Arial,Helvetica\" ");
                out.println("font size=\"+3\"><b>");
                try {
                        Message msg = this.messages[msgNum];
                        BufferedMessage buffer = new BufferedMessage();
                        buffer.setMessage(msg);
                        displayMessageHeaders(buffer, out);
                        String content = buffer.getContent();
                        out.println(content);
                } catch (Exception exception) {
                        out.println(exception.toString());
                }
                out.println("</BODY></html>");
                out.flush();
                out.close();
        }

        /**
         * This is a utility message that pretty-prints the message headers for
         * message that is being displayed.
         */
        private void displayMessageHeaders(BufferedMessage message, ServletOutputStream out)
                throws IOException {

                try {
                        out.println("<b>Date:</b> " + message.getReceivedDate() + "<br>");
                        out.print("<b>From:</b> ");
                        out.print(message.getSenders());
                        out.println("<br>");
                        out.print("<b>To:</b> ");
                        out.print(message.getRecipients());
                        out.println("<br>");
                        out.print("<b>Subject:</b> "
                                + message.getSubject()
                                + "<br>");
                } catch (MessagingException mex) {
                        out.println(message.toString());
                }
        }

        /**
         * This method displays the URL's for the available commands and the
         * INBOX headerlist
         */
        private void displayHeaders(ServletOutputStream out)
                throws IOException {

                SimpleDateFormat df = new SimpleDateFormat("dd/MM/yyyy");

                out.println("<html>");
                out.println("<HEAD><TITLE>JavaMail Servlet</TITLE></HEAD>");
                out.println("<BODY bgcolor=\"#ccccff\"><hr>");
                out.print("<center><font face=\"Arial,Helvetica\" font size=\"+3\">");

                // URL's for the commands that are available
                out.println("<font face=\"Arial,Helvetica\" font size=\"+3\"><b>");
                out.println("<a href=\""
                        + "?logout=true\">Logout</a>");
                out.println("</b></font>");
                out.println("<hr>");

                // List headers in a table
                out.print("<table cellpadding=1 cellspacing=1 "); // table
                out.println("width=\"100%\" border=1>");          // settings

                // sender column header
                out.println("<tr><td width=\"25%\" bgcolor=\"ffffcc\">");
                out.println("<font face=\"Arial,Helvetica\" font size=\"+1\">");
                out.println("<b>Sender</b></font></td>");
                // date column header
                out.println("<td width=\"15%\" bgcolor=\"ffffcc\">");
                out.println("<font face=\"Arial,Helvetica\" font size=\"+1\">");
                out.println("<b>Date</b></font></td>");
                // subject column header
                out.println("<td bgcolor=\"ffffcc\">");
                out.println("<font face=\"Arial,Helvetica\" font size=\"+1\">");
                out.println("<b>Subject</b></font></td></tr>");

                try {
                        int msgCount = this.messages.length;
                        // for each message, show its headers
                        for (int i = 0; i < msgCount; i++) {
                                Message m = this.messages[i];
                                BufferedMessage buffer = new BufferedMessage();
                                buffer.setMessage(m);
                                // from
                                out.println("<tr valigh=middle>");
                                out.print("<td width=\"25%\" bgcolor=\"ffffff\">");
                                out.println("<font face=\"Arial,Helvetica\">"
                                        + buffer.getSenders()
                                        + "</font></td>");
                                // date
                                out.print("<td nowrap width=\"15%\" bgcolor=\"ffffff\">");
                                out.println("<font face=\"Arial,Helvetica\">"
                                        + df.format(buffer.getReceivedDate())
                                        + "</font></td>");
                                // subject & link
                                out.print("<td bgcolor=\"ffffff\">");
                                out.println("<font face=\"Arial,Helvetica\">"
                                        + "<a href=\""
                                        + "?message="
                                        + i + "\">"
                                        + buffer.getSubject()
                                        + "</a>"
                                        + "</font></td>");
                                out.println("</tr>");
                        }
                } catch (MessagingException mex) {
                        out.println("<tr><td>" + mex.toString() + "</td></tr>");
                }
                out.println("</table>");
                out.println("</BODY></html>");
                out.flush();
                out.close();
        }

        @Override
        public String getServletInfo() {
                return "A mail reader servlet";
        }
}
TOP

Related Classes of webmail.MailServlet

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.