import java.io.IOException;
import java.io.PrintWriter;
import java.util.Properties;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import com.sun.corba.se.impl.protocol.giopmsgheaders.Message;
public class MailAccessor extends HttpServlet {
private final static String DEFAULT_SERVER = "mail.attbi.com";
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, java.io.IOException {
response.setContentType("text/html");
java.io.PrintWriter out = response.getWriter();
out.println("Email Reader");
handleMessages(request, out);
out.println("");
out.close();
} //doGet
private void handleMessages(HttpServletRequest request, PrintWriter out)
throws IOException, ServletException {
HttpSession httpSession = request.getSession();
String user = (String) httpSession.getAttribute("user");
String password = (String) httpSession.getAttribute("pass");
String popAddr = (String) httpSession.getAttribute("pop");
Store popStore = null;
Folder folder = null;
if (!check(popAddr))
popAddr = MailAccessor.DEFAULT_SERVER;
try {
if ((!check(user)) || (!check(password)))
throw new ServletException(
"A valid username and password is required to check email.");
Properties properties = System.getProperties();
Session session = Session.getDefaultInstance(properties);
popStore = session.getStore("pop3");
popStore.connect(popAddr, user, password);
folder = popStore.getFolder("INBOX");
if (!folder.exists())
throw new ServletException(
"An 'INBOX' folder does not exist for the user.");
folder.open(Folder.READ_ONLY);
Message[] messages = folder.getMessages();
int msgLen = messages.length;
if (msgLen == 0)
out
.println("The INBOX folder does not yet contain any email messages.
");
for (int i = 0; i < msgLen; i++) {
displayMessage(messages[i], out);
out.println("
");
}
} catch (Exception exc) {
out
.println("Sorry, an error occurred while accessing the email messages.
");
out.println(exc.toString());
} finally {
try {
if (folder != null)
folder.close(false);
if (popStore != null)
popStore.close();
} catch (Exception e) {
}
}
}//printMessages
private void displayMessage(Message msg, PrintWriter out)
throws MessagingException, IOException {
if (msg != null && msg.getContent() instanceof String) {
if (msg.getFrom()[0] instanceof InternetAddress) {
out.println("Message received from: "
+ ((InternetAddress) msg.getFrom()[0]).getAddress()
+ "
");
}
out.println("Message content type: " + msg.getContentType()
+ "
");
out.println("Message body content: " + (String) msg.getContent());
} else {
out
.println("The received email message was not of a text content type.
");
}
}//displayMessage
private boolean check(String value) {
if (value == null || value.equals(""))
return false;
return true;
}
}