1 10 11 package org.mmbase.servlet; 12 13 import java.io.*; 14 import javax.servlet.*; 15 import javax.servlet.http.*; 16 import java.util.*; 17 18 import org.mmbase.util.*; 19 import org.mmbase.module.*; 20 import org.mmbase.util.logging.*; 21 22 37 public abstract class SimpleFormToMailServlet extends JamesServlet { 38 static Logger log = Logging.getLoggerInstance(performance.class.getName()); 39 40 protected SendMailInterface sendmail; 41 boolean first=true; 42 43 String entries[] = null; 44 45 public void init() { 46 sendmail=(SendMailInterface)Module.getModule("sendmail"); 47 if( sendmail == null ) { 48 log.error("SimpleFormToMailServlet - init(): sendmail is null!!!"); 49 } else { 50 log.debug("SimpleFormToMailServlet - init(): successfully initialized."); 51 } 52 } 53 54 57 public void reload() { 58 sendmail=(SendMailInterface)Module.getModule("sendmail"); 59 if( sendmail == null ) { 60 log.error("SimpleFormToMailServlet - reload(): sendmail is null!!!"); 61 } else { 62 log.debug("SimpleFormToMailServlet - reload(): successfully reloaded."); 63 } 64 } 65 66 70 public synchronized void service(HttpServletRequest req, HttpServletResponse res) throws ServletException,IOException { 71 72 String from = null; 73 String to = null; 74 String subject = null; 75 String text = null; 76 77 HttpPost hp = new HttpPost( req ); 78 from = hp.getPostParameter("email"); 79 to = getToEmailAddress(); 80 subject = getSubject(); 81 text = getentries( hp ); 82 83 if ( !sendmail( from, to, subject, text) ) { 84 log.error("SimpleFormToMailServlet - service(): ERROR: mail from("+from+"), to("+to+"), subject("+subject+"), text("+text+"): not mailed!"); 85 displayErrorMail(res); 86 } else { 87 log.debug("SimpleFormToMailServlet - service(): mail from("+from+"), to("+to+"), subject("+subject+"), text("+text+"): mailed!"); 88 displaySuccess(res); 89 } 90 } 91 92 95 protected String getentries( HttpPost post ) { 96 String result = ""; 97 Hashtable postparams = post.getPostParameters(); 98 Enumeration e = postparams.keys(); 99 String key, value; 100 while( e.hasMoreElements() ) { 101 key = (String ) e.nextElement(); 102 103 Vector v = post.getPostMultiParameter( key ); 104 Enumeration e2 = v.elements(); 105 106 if( e2.hasMoreElements() ) { 107 value = ""; 108 while( e2.hasMoreElements() ) { 109 value += (String )e2.nextElement(); 110 if( e2.hasMoreElements() ) 111 value += ","; 112 } 113 } else 114 value = "unknown"; 115 116 result += key +":\t\t" + value + "\n"; 117 } 118 return result; 119 } 120 121 public abstract String getSubject(); 122 123 public abstract String getToEmailAddress(); 124 125 129 public String getHtmlHeader( String title ) { 130 StringBuffer b = new StringBuffer (); 131 132 b.append( "<HTML>\n" ); 133 b.append( "<HEAD>\n" ); 134 b.append( " <TITLE>"+title+"</TITLE>\n" ); 135 b.append( "</HEAD>\n" ); 136 b.append( "<BODY BGCOLOR=\"#000000\">\n" ); 137 b.append( "\n" ); 138 b.append( "<P><CENTER><TABLE BORDER=0 WIDTH=500 HEIGHT=\"95%\">\n" ); 139 b.append( " <TR>\n" ); 140 b.append( " <TD bgcolor=\"#FFFFFF\">\n" ); 141 b.append( " <P><CENTER><B><FONT SIZE=\"+1\" FACE=\"Arial\">" ); 142 143 return b.toString(); 144 } 145 146 public String getHtmlFooter() { 147 StringBuffer b = new StringBuffer (); 148 b.append( " </FONT></B></CENTER></P>\n" ); 149 b.append( " </TD></TR>\n" ); 150 b.append( "</TABLE></CENTER></P>\n" ); 151 b.append( "</BODY>\n" ); 152 b.append( "</HTML>\n" ); 153 return b.toString(); 154 } 155 156 159 private void displayResult( HttpServletResponse res, String title, String message ) { 160 try { 161 String result = ""; 162 PrintStream out = new PrintStream(res.getOutputStream()); 163 try { 165 res.setContentType("text/html"); 166 res.flushBuffer(); 168 } catch (IOException e) { e.printStackTrace(); } 169 result += getHtmlHeader( title ); 170 result += message; 171 result += getHtmlFooter(); 172 out.println( result ); 173 } catch( Exception e ) { 174 log.debug("displayResults(): ERROR: " + e ); 175 } 176 } 177 178 private void displaySuccess( HttpServletResponse res ) { 179 String titel = "Formulier is verstuurd"; 180 String body = "Uw formulier is verstuurd.<BR>\n"; 181 displayResult(res, titel, body); 182 } 183 184 private void displayErrorUsername ( HttpServletResponse res ) { 185 String titel = "Uw naam is niet ingevuld"; 186 String body = "Uw naam is niet ingevuld in uw formulier. <BR>\n"; 187 body += "<STRONG>Uw formulier is daarom NIET opgestuurt</STRONG>"; 188 displayResult(res, titel, body); 189 } 190 191 private void displayErrorEntry ( HttpServletResponse res ) { 192 String titel = "Entry niet gevonden in dokument"; 193 String body = "Het systeem heeft een fout gedetecteerd tijdens het verwerken van uw formulier.<BR>\n"; 194 body += "<STRONG>Uw formulier is daarom NIET opgestuurt</STRONG>"; 195 displayResult(res, titel, body); 196 } 197 198 private void displayErrorMail ( HttpServletResponse res ) { 199 String titel = "Fout tijdens versturen email"; 200 String body = "Er is een fout opgetreden tijdens het versturen van uw formulier.<BR>\n"; 201 body += "Er is melding van gemaakt aan de beheerder, maar u kunt het later nog eens opnieuw opsturen voor de zekerheid."; 202 displayResult(res, titel, body); 203 } 204 205 206 211 private boolean sendmail( String from, String to, String subject, String text ) { 212 log.debug("SimpleFormToMailServlet - sendmail(): from("+from+"), to("+to+"), subject("+subject+"), text("+text+")"); 213 214 boolean result = false; 215 Mail mail = new Mail(to, from); 216 mail.setTo( to ); 217 mail.setFrom( from ); 218 mail.setSubject( subject ); 219 mail.setDate(); 220 mail.setReplyTo(from ); 221 mail.setText(text); 222 result = sendmail.sendMail(mail); 223 return result; 224 } 225 226 227 231 public String getServletInfo() { 232 return ("SimpleFormToMailServlet - Marcel Maatkamp"); 233 } 234 } 235
| Popular Tags
|