⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 javamailservlet.java

📁 100多M的J2EE培训内容
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
/* * @(#)JavaMailServlet.java	1.5 01/05/23 * * Copyright 1998, 1999 Sun Microsystems, Inc. All Rights Reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: *  * - Redistributions of source code must retain the above copyright *   notice, this list of conditions and the following disclaimer. *  * - Redistribution in binary form must reproduce the above copyright *   notice, this list of conditions and the following disclaimer in the *   documentation and/or other materials provided with the distribution. *  * Neither the name of Sun Microsystems, Inc. or the names of contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. *  * This software is provided "AS IS," without a warranty of any kind. ALL * EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND WARRANTIES, * INCLUDING ANY IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A * PARTICULAR PURPOSE OR NON-INFRINGEMENT, ARE HEREBY EXCLUDED. SUN AND * ITS LICENSORS SHALL NOT BE LIABLE FOR ANY DAMAGES OR LIABILITIES * SUFFERED BY LICENSEE AS A RESULT OF  OR RELATING TO USE, MODIFICATION * OR DISTRIBUTION OF THE SOFTWARE OR ITS DERIVATIVES. IN NO EVENT WILL * SUN OR ITS LICENSORS BE LIABLE FOR ANY LOST REVENUE, PROFIT OR DATA, OR * FOR DIRECT, INDIRECT, SPECIAL, CONSEQUENTIAL, INCIDENTAL OR PUNITIVE * DAMAGES, HOWEVER CAUSED AND REGARDLESS OF THE THEORY OF LIABILITY, * ARISING OUT OF THE USE OF OR INABILITY TO USE SOFTWARE, EVEN IF SUN HAS * BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. *  * You acknowledge that Software is not designed, licensed or intended * for use in the design, construction, operation or maintenance of any * nuclear facility. */import java.io.*;import java.util.*;import java.text.*;import javax.servlet.*;import javax.servlet.http.*;import javax.mail.*;import javax.mail.internet.*;import javax.activation.*;/** * This is a servlet that demonstrates the use of JavaMail APIs * in a 3-tier application. It allows the user to login to an  * IMAP store, list all the messages in the INBOX folder, view * selected messages, compose and send a message, and logout. * <p> * Please note: This is NOT an example of how to write servlets!  * This is simply to show that JavaMail can be used in a servlet. * <p> * For more information on this servlet, see the  * JavaMailServlet.README.txt file.  * <p> * For more information on servlets, see  * <a href="http://java.sun.com/products/java-server/servlets/index.html"> * http://java.sun.com/products/java-server/servlets/index.html</a> * * @author Max Spivak */public class JavaMailServlet extends HttpServlet implements SingleThreadModel {    String protocol = "imap";    String mbox = "INBOX";    /**     * 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.     */    public  void doPost(HttpServletRequest req, HttpServletResponse res)	throws ServletException, IOException {        // get the session	HttpSession ssn = req.getSession(true);	String send = req.getParameter("send");        String host = req.getParameter("hostname");        String user = req.getParameter("username");        String passwd = req.getParameter("password");        URLName url = new URLName(protocol, host, -1, mbox, user, passwd);        ServletOutputStream out = res.getOutputStream();	res.setContentType("text/html");	out.println("<html><body bgcolor=\"#CCCCFF\">");	if (send != null) {	    // process message sending	    send(req, res, out, ssn);	} else {	    // initial login	    // create 	    MailUserData mud = new MailUserData(url);	    ssn.putValue("javamailservlet", mud);	    	    try {		Properties props = System.getProperties();		props.put("mail.smtp.host", host);		Session session = Session.getDefaultInstance(props, null);		session.setDebug(false);		Store store = session.getStore(url);		store.connect();		Folder folder = store.getDefaultFolder();		if (folder == null) 		    throw new MessagingException("No default folder");				folder = folder.getFolder(mbox);		if (folder == null)		    throw new MessagingException("Invalid folder");				folder.open(Folder.READ_WRITE);		int totalMessages = folder.getMessageCount();		Message[] msgs = folder.getMessages();		FetchProfile fp = new FetchProfile();		fp.add(FetchProfile.Item.ENVELOPE);		folder.fetch(msgs, fp);				// track who logged in		System.out.println("Login from: " + store.getURLName());				// save stuff into MUD		mud.setSession(session);		mud.setStore(store);		mud.setFolder(folder);				// splash		out.print("<center>");		out.print("<font face=\"Arial,Helvetica\" font size=+3>");		out.println("<b>Welcome to JavaMail!</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());            	    } finally {		out.println("</body></html>");		out.close();	    }	}    }    /**     * This method handles the GET requests for the client.     */    public void doGet (HttpServletRequest req, HttpServletResponse res)	throws ServletException, IOException {        HttpSession ses = req.getSession(false); // before we write to out        ServletOutputStream out = res.getOutputStream();	MailUserData mud = getMUD(ses);	if (mud == null) {	    res.setContentType("text/html");	    out.println("<html><body>Please Login (no session)</body></html>");	    out.close();	    return;	}	if (!mud.getStore().isConnected()) {	    res.setContentType("text/html");	    out.println("<html><body>Not Connected To Store</body></html>");	    out.close();	    return;	}	// mux that takes a GET request, based on parameters figures	// out what it should do, and routes it to the	// appropriate method	// get url parameters	String msgStr = req.getParameter("message");        String logout = req.getParameter("logout");	String compose = req.getParameter("compose");	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");		displayMessage(mud, req, out, msgNum);	    } else if (part != null) {		// display part "part" in message "msgStr"		partNum = Integer.parseInt(part);                displayPart(mud, msgNum, partNum, out, res);	    }	} else if (compose != null) {	    // display compose form	    compose(mud, res, out);        } else if (logout != null) {	    // process logout            try {                mud.getFolder().close(false);                mud.getStore().close();		ses.invalidate();                out.println("<html><body>Logged out OK</body></html>");            } catch (MessagingException mex) {                out.println(mex.toString());            }	} else {	    // display headers	    displayHeaders(mud, req, out);	}    }    /* main method to display messages */    private void displayMessage(MailUserData mud, HttpServletRequest req, 				ServletOutputStream out, int msgNum) 	throws IOException {	    	out.println("<html>");        out.println("<HEAD><TITLE>JavaMail Servlet</TITLE></HEAD>");	out.println("<BODY bgcolor=\"#ccccff\">");	out.print("<center><font face=\"Arial,Helvetica\" ");	out.println("font size=\"+3\"><b>");	out.println("Message " + (msgNum+1) + " in folder " + 		    mud.getStore().getURLName() + 		    "/INBOX</b></font></center><p>");	try {	    Message msg = mud.getFolder().getMessage(msgNum);	    // first, display this message's headers	    displayMessageHeaders(mud, msg, out);	    // and now, handle the content	    Object o = msg.getContent();            	    //if (o instanceof String) {	    if (msg.isMimeType("text/plain")) {		out.println("<pre>");		out.println((String)o);		out.println("</pre>");	    //} else if (o instanceof Multipart){	    } else if (msg.isMimeType("multipart/*")) {		Multipart mp = (Multipart)o;		int cnt = mp.getCount();		for (int i = 0; i < cnt; i++) {		    displayPart(mud, msgNum, mp.getBodyPart(i), i, req, out);		}	    } else {		out.println(msg.getContentType());	    }	} catch (MessagingException mex) {	    out.println(mex.toString());	}	out.println("</BODY></html>");	out.close();    }    /**      * This method displays a message part. <code>text/plain</code>     * content parts are displayed inline. For all other parts,     * a URL is generated and displayed; clicking on the URL     * brings up the part in a separate page.     */    private void displayPart(MailUserData mud, int msgNum, Part part, 			     int partNum, HttpServletRequest req, 			     ServletOutputStream out) 	throws IOException {	if (partNum != 0)	    out.println("<p><hr>");        try {	    String sct = part.getContentType();	    if (sct == null) {		out.println("invalid part");		return;	    }	    ContentType ct = new ContentType(sct);	    	    if (partNum != 0)		out.println("<b>Attachment Type:</b> " +   			    ct.getBaseType() + "<br>");	    if (ct.match("text/plain")) {  		// display text/plain inline		out.println("<pre>");		out.println((String)part.getContent());		out.println("</pre>");	    } else {		// generate a url for this part		String s;		if ((s = part.getFileName()) != null)		    out.println("<b>Filename:</b> " + s + "<br>");		s = null;		if ((s = part.getDescription()) != null)		    out.println("<b>Description:</b> " + s + "<br>");				out.println("<a href=\"" +			    HttpUtils.getRequestURL(req) + 			    "?message=" +			    msgNum + "&part=" +			    partNum + "\">Display Attachment</a>");	    }	} catch (MessagingException mex) {	    out.println(mex.toString());	}    }

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -