1 21 package org.glassfish.grizzly.async.servlet; 22 23 import java.io.IOException ; 24 import java.io.PrintWriter ; 25 import javax.mail.Address ; 26 import javax.mail.Message ; 27 import javax.mail.MessagingException ; 28 import javax.mail.internet.InternetAddress ; 29 import javax.servlet.ServletConfig ; 30 import javax.servlet.ServletException ; 31 import javax.servlet.ServletOutputStream ; 32 import javax.servlet.http.HttpServlet ; 33 import javax.servlet.http.HttpServletRequest ; 34 import javax.servlet.http.HttpServletResponse ; 35 36 import org.glassfish.grizzly.async.javamail.JavaMailAsyncFilterHandler; 37 import org.glassfish.grizzly.async.javamail.JavaMailAsyncFilterEvent; 38 import org.glassfish.grizzly.async.javamail.JavaMailAsyncFilter; 39 40 47 public class EmailNotifierServlet extends HttpServlet 48 implements JavaMailAsyncFilterHandler{ 49 50 53 private String username; 54 55 56 59 private String password; 60 61 62 65 private String mailServer; 66 67 68 71 private String mailServerPort; 72 73 74 77 private Message [] messages; 78 79 80 public EmailNotifierServlet() { 81 } 82 83 84 88 public void init(ServletConfig config) throws ServletException { 89 username = config.getInitParameter("username"); 90 password = config.getInitParameter("password"); 91 mailServer = config.getInitParameter("mailServer"); 92 mailServerPort = config.getInitParameter("mailServerPort"); 93 94 JavaMailAsyncFilter.register( 95 config.getInitParameter("contextPath"), this); 96 } 97 98 99 105 public void doGet(HttpServletRequest request, HttpServletResponse response) 106 throws ServletException , IOException { 107 108 PrintWriter out = response.getWriter(); 109 try{ 110 111 if ( messages != null) { 112 out.println("<html>"); 113 out.println("<HEAD><TITLE>Async JavaMail Servlet</TITLE></HEAD>"); 114 out.println("<BODY bgcolor=\"#ccccff\">"); 115 out.print("<center><font face=\"Arial,Helvetica\" "); 116 out.println("font size=\"+3\"><b>"); 117 out.println("You have " + messages.length + " messages in folder " 118 + "inbox</b></font></center><p>"); 119 120 for (int i=0; i < messages.length; i++){ 121 try { 122 Message msg = messages[i]; 123 displayMessageHeaders(msg, out); 124 125 try{ 126 Object o = msg.getContent(); 127 128 out.println("<pre>"); 129 out.println((String )o); 130 out.println("</pre>"); 131 } catch (NullPointerException ex){ 132 ; } 134 } catch (MessagingException mex) { 135 out.println(mex.toString()); 136 } 137 } 138 } 139 140 out.println("</BODY></html>"); 141 out.close(); 142 } catch (Throwable t){ 143 t.printStackTrace(); 144 } 145 } 146 147 149 159 public boolean handleEvent(JavaMailAsyncFilterEvent event) { 160 messages = event.getMessages(); 161 162 if ( messages == null || messages.length == 0){ 163 return true; 164 } else { 165 return false; 166 } 167 } 168 169 170 public String getUserName() { 171 return username; 172 } 173 174 175 public String getPassword() { 176 return password; 177 } 178 179 180 public String getMailServer() { 181 return mailServer; 182 } 183 184 185 public String getMailServerPort() { 186 return mailServerPort; 187 } 188 189 191 private String getDisplayAddress(Address a) { 192 String pers = null; 193 String addr = null; 194 if (a instanceof InternetAddress && 195 ((pers = ((InternetAddress )a).getPersonal()) != null)) { 196 197 addr = pers + " "+"<"+((InternetAddress )a).getAddress()+">"; 198 } else 199 addr = a.toString(); 200 201 return addr; 202 } 203 204 205 private void displayMessageHeaders(Message msg, PrintWriter out) 206 throws IOException { 207 208 try { 209 out.println("<b>Date:</b> " + msg.getSentDate() + "<br>"); 210 211 Address [] fr = msg.getFrom(); 212 if (fr != null) { 213 boolean tf = true; 214 out.print("<b>From:</b> "); 215 for (int i = 0; i < fr.length; i++) { 216 out.print(((tf) ? " " : ", ") + getDisplayAddress(fr[i])); 217 tf = false; 218 } 219 out.println("<br>"); 220 } 221 222 Address [] to = msg.getRecipients(Message.RecipientType.TO); 223 if (to != null) { 224 boolean tf = true; 225 out.print("<b>To:</b> "); 226 for (int i = 0; i < to.length; i++) { 227 out.print(((tf) ? " " : ", ") + getDisplayAddress(to[i])); 228 tf = false; 229 } 230 out.println("<br>"); 231 } 232 233 Address [] cc = msg.getRecipients(Message.RecipientType.CC); 234 if (cc != null) { 235 boolean cf = true; 236 out.print("<b>CC:</b> "); 237 for (int i = 0; i < cc.length; i++) { 238 out.print(((cf) ? " " : ", ") + getDisplayAddress(cc[i])); 239 cf = false; 240 } 241 out.println("<br>"); 242 } 243 244 out.print("<b>Subject:</b> " + 245 ((msg.getSubject() !=null) ? msg.getSubject() : "") + 246 "<br>"); 247 248 } catch (MessagingException mex) { 249 out.println(msg.toString()); 250 } 251 } 252 253 } 254 | Popular Tags |