displaymessage.java
来自「100多M的J2EE培训内容」· Java 代码 · 共 396 行
JAVA
396 行
package bible.javamail;
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
import java.util.*;
import java.text.*;
import javax.activation.*;
import javax.mail.*;
import javax.mail.internet.*;
import javax.naming.*;
/**
* Class DisplayMessage
*
*
* @author
* @version %I%, %G%
*/
public class DisplayMessage extends HttpServlet {
private PrintWriter pw;
private Session session;
private Store store;
private Folder defaultFolder;
private Folder folder;
private String folderName;
private int msgid;
private Message message;
/**
* Method doGet
*
*
* @param req
* @param res
*
* @throws IOException
* @throws ServletException
*
*/
public void doGet(HttpServletRequest req, HttpServletResponse res)
throws ServletException, IOException {
pw = res.getWriter();
res.setContentType("text/html");
String cmd = req.getParameter("cmd");
folderName = req.getParameter("folder");
msgid = new Integer(req.getParameter("msgid")).intValue();
// display message
if (cmd.equals("display")) {
displayMessage();
// delete message
} else if (cmd.equals("delete")) {
deleteMessage();
RequestDispatcher rd =
getServletContext().getNamedDispatcher("DisplayMessages");
rd.forward(req, res);
}
}
private void getDefaultFolder()
throws NamingException, NoSuchProviderException, MessagingException {
// lookup mail session in JNDI
InitialContext context = new InitialContext();
session = (Session) context.lookup("BibleMailSession");
// get store and create an authenticated session
store = session.getStore();
store.connect("xxx.xxx.xxx.xxx", "username", "password");
// get the default folder
defaultFolder = store.getDefaultFolder();
}
private void getMessage() throws MessagingException, NamingException {
// try to open foler read/write otherwise read-only
getDefaultFolder();
folder = defaultFolder.getFolder(folderName);
try {
folder.open(Folder.READ_WRITE);
} catch (MessagingException ex) {
folder.open(Folder.READ_ONLY);
}
// get message
message = folder.getMessage(msgid);
}
private void displayMessage() {
pw.println("<HTML><HEAD><TITLE>Message Detail</TITLE></HEAD>");
pw.println("<BODY><H1>Message Detail</H1>");
try {
getMessage();
// display the message
pw.println("<TABLE width='100%'>");
pw.println("<TR><TD>Sent:</TD><TD>" + getSent() + "</TD></TR>");
pw.println("<TR><TD>Received:</TD><TD>" + getReceived() + "</TD></TR>");
pw.println("<TR><TD>From:</TD><TD>" + getFrom() + "</TD></TR>");
pw.println("<TR><TD>Reply to:</TD><TD>" + getReplyTo() + "</TD></TR>");
pw.println("<TR><TD>To:</TD><TD>" + getTo() + "</TD></TR>");
pw.println("<TR><TD>Cc:</TD><TD>" + getCc() + "</TD></TR>");
pw.println("<TR><TD>Subject:</TD><TD>" + getSubject() + "</TD></TR>");
pw.println("<TR><TD>Size:</TD><TD>" + getSize() + "</TD></TR>");
pw.println("<TR><TD>Flags:</TD><TD>" + getFlags() + "</TD></TR>");
pw.println("<TR><TD VALIGN>Message:</TD><TD>" + getMessageText()
+ "</TD></TR>");
String enclosure = getEnclosureName();
pw.print("<TR><TD>Enclosure:</TD><TD>" + enclosure + "</TD></TR>");
pw.print("<TR><TD><BR><A HREF='message?cmd=delete&folder=" + folderName
+ "&msgid=" + msgid + "'>Delete</A></TD></TR>");
pw.println("</TABLE>");
folder.close(false);
store.close();
} catch (Exception e) {
pw.println("<BR><BR><STRONG>" + e.getMessage() + "</STRONG><BR>");
e.printStackTrace(pw);
}
pw.println("</BODY></HTML>");
}
private void deleteMessage() {
try {
getMessage();
message.setFlag(Flags.Flag.DELETED, true);
} catch (Exception e) {}
}
/**
* Method getSent
*
*
* @return
*
* @throws MessagingException
*
*/
public String getSent() throws MessagingException {
Date sentDate = message.getSentDate();
return DateFormat.getDateTimeInstance(DateFormat.MEDIUM,
DateFormat.SHORT).format(sentDate);
}
/**
* Method getReceived
*
*
* @return
*
* @throws MessagingException
*
*/
public String getReceived() throws MessagingException {
String date = "";
Date receivedDate = message.getReceivedDate();
if (receivedDate != null) {
date =
DateFormat.getDateTimeInstance(DateFormat.MEDIUM,
DateFormat.SHORT).format(receivedDate);
}
return date;
}
/**
* Method getFrom
*
*
* @return
*
* @throws MessagingException
*
*/
public String getFrom() throws MessagingException {
Address[] addresses = message.getFrom();
return addresses [0].toString();
}
/**
* Method getReplyTo
*
*
* @return
*
* @throws MessagingException
*
*/
public String getReplyTo() throws MessagingException {
StringBuffer sb = new StringBuffer();
Address[] addresses = message.getReplyTo();
if (addresses != null) {
for (int j = 0; j < addresses.length; j++) {
sb.append(addresses [j].toString() + " ");
}
}
return sb.toString();
}
/**
* Method getTo
*
*
* @return
*
* @throws MessagingException
*
*/
public String getTo() throws MessagingException {
StringBuffer sb = new StringBuffer();
Address[] addresses = message.getRecipients(Message.RecipientType.TO);
if (addresses != null) {
for (int j = 0; j < addresses.length; j++) {
sb.append(addresses [j].toString() + " ");
}
}
return sb.toString();
}
/**
* Method getCc
*
*
* @return
*
* @throws MessagingException
*
*/
public String getCc() throws MessagingException {
StringBuffer sb = new StringBuffer();
Address[] addresses = message.getRecipients(Message.RecipientType.CC);
if (addresses != null) {
for (int j = 0; j < addresses.length; j++) {
sb.append(addresses [j].toString() + " ");
}
}
return sb.toString();
}
/**
* Method getSubject
*
*
* @return
*
* @throws MessagingException
*
*/
public String getSubject() throws MessagingException {
return message.getSubject();
}
private String getSize() throws MessagingException {
int size = message.getSize();
String sizeDesc = size + " B";
if (size >= 1024) {
size /= 1024;
sizeDesc = size + " KB";
if (size >= 1024) {
size /= 1024;
sizeDesc = size + " MB";
}
}
return sizeDesc;
}
private String getFlags() throws MessagingException {
Flags flags = message.getFlags();
StringBuffer sb = new StringBuffer();
Flags.Flag[] sysFlags = flags.getSystemFlags();
for (int i = 0; i < sysFlags.length; i++) {
if (sysFlags [i] == Flags.Flag.ANSWERED) {
sb.append("Answered ");
} else if (sysFlags [i] == Flags.Flag.DELETED) {
sb.append("Deleted ");
} else if (sysFlags [i] == Flags.Flag.DRAFT) {
sb.append("Draft ");
} else if (sysFlags [i] == Flags.Flag.FLAGGED) {
sb.append("Flagged ");
} else if (sysFlags [i] == Flags.Flag.RECENT) {
sb.append("Recent ");
} else if (sysFlags [i] == Flags.Flag.SEEN) {
sb.append("Seen ");
} else if (sysFlags [i] == Flags.Flag.USER) {
sb.append("User ");
} else {
sb.append("Unknown ");
}
}
String[] userFlags = flags.getUserFlags();
for (int i = 0; i < userFlags.length; i++) {
sb.append(userFlags [i].toString() + " ");
}
return sb.toString();
}
/**
* Method getMessageText
*
*
* @return
*
* @throws IOException
* @throws MessagingException
*
*/
public String getMessageText() throws IOException, MessagingException {
String text = "";
if (message.isMimeType("text/plain")) {
text = (String) message.getContent();
} else if (message.isMimeType("multipart/*")) {
Multipart mp = (Multipart) message.getContent();
BodyPart bp = mp.getBodyPart(0);
if (bp.isMimeType("text/plain") | bp.isMimeType("text/html")) {
text = (String) bp.getContent();
}
}
return text;
}
private String getEnclosureName() throws MessagingException, IOException {
StringBuffer sb = new StringBuffer();
if (message.isMimeType("multipart/*")) {
Multipart mp = (Multipart) message.getContent();
int count = mp.getCount();
for (int i = 0; i < count; i++) {
BodyPart bp = mp.getBodyPart(i);
if (bp.getFileName() != null) {
sb.append(bp.getFileName() + " ");
}
}
}
return sb.toString();
}
}
/*--- Formatted in Bible Style on Thu, Sep 6, '01 ---*/
/*------ Formatted by Jindent 3.24 Gold 1.02 --- http://www.jindent.de ------*/
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?