package junit.util; import org.apache.mina.core.service.IoHandlerAdapter; import org.apache.mina.core.session.IdleStatus; import org.apache.mina.core.session.IoSession; /** * NIO Test client SMTP session handler * * @author De Oliveira Edouard <doe_wanted@yahoo.fr> */ public class SMTPSessionHandler extends IoHandlerAdapter { private String hostName; public SMTPSessionHandler(String hostName) { this.hostName = hostName; } @Override public void sessionOpened( IoSession session ) { session.write("EHLO " + hostName); session.setAttribute("step", 0); } @Override public void sessionIdle(IoSession session, IdleStatus status) throws Exception { System.out.println("Session idled !!!"); } @Override public void messageReceived( IoSession session, Object message ) { int step = (Integer) session.getAttribute("step"); switch (step) { case 0 : send(session, "MAIL FROM:Robot sender<sender@gmail.com>"); break; case 1 : send(session, "RCPT TO:Katherine Dunn<Katherine.Dunn@fake.com>"); break; case 2 : send(session, "DATA"); break; case 3 : send(session, ""); send(session, "Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Suspendisse a neque. " + "In nec dolor eu massa porttitor accumsan. Donec varius mollis dolor. Vestibulum ut nulla " + "vel diam mollis imperdiet. Vestibulum fringilla varius augue. Nunc viverra. Aliquam erat " + "volutpat. Morbi eros est, ullamcorper eget, ornare quis, dignissim nec, diam. Donec " + "molestie imperdiet odio. Curabitur lacus orci, porta nec, porttitor et, dignissim ut, " + "leo. Etiam id neque non ipsum faucibus malesuada. Sed mollis.\n\n"+ "Cras et tellus. Aliquam sodales lobortis sem. In id diam. Nam condimentum. " + "Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Nullam purus leo, " + "fermentum sed, lobortis ac, interdum vitae, nunc. Aliquam erat volutpat. Sed " + "lectus lacus, imperdiet consectetuer, tempus at, condimentum et, arcu. Ut neque. " + "Duis suscipit vestibulum lacus. Nullam suscipit sagittis felis. Ut convallis. " + "Etiam sed sem. Curabitur ac sapien. Aliquam gravida risus eu nisl. Vestibulum erat " + "dolor, dictum non, porttitor vel, sollicitudin a, tellus."); send(session, "."); break; case 4 : send(session, "QUIT"); break; } step++; session.setAttribute("step", step); } @Override public void exceptionCaught( IoSession session, Throwable cause ) { cause.printStackTrace(); session.close(false); } /** * Sends a message to the server. A newline will * be appended to the message. */ public void send(IoSession session, String msg) { // Force \r\n since println() behaves differently on different platforms session.write(msg + "\r\n"); } }