/* * ServletAux.java * * Created on 10 de Março de 2005, 12:24 */ package siprp.pagina; import java.io.*; import java.util.*; import javax.mail.*; import javax.mail.internet.*; import javax.servlet.*; import javax.servlet.http.*; import java.sql.*; import org.apache.velocity.*; import org.apache.velocity.app.*; import com.evolute.utils.arrays.*; /** * * @author psantos */ public class MailerServlet extends HttpServlet implements GlobalConstants { public static final String EMAIL = "email"; protected static Hashtable PROPERTIES; public void init() { try { String TEMPLATE_DIR = this.getServletContext().getRealPath( "/" ) + "html/"; Properties props = new Properties(); props.setProperty( "file.resource.loader.path", TEMPLATE_DIR ); Velocity.init( props ); if( PROPERTIES == null ) { Class.forName(bdDriver); Connection con = DriverManager.getConnection( bdUrl, bdUsername, bdPassword ); Statement stmt = con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY); ResultSet2DArray array = new ResultSet2DArray( stmt.executeQuery( "Select name, value FROM properties;" ) ); PROPERTIES = new Hashtable(); for( int n = 0; n < array.columnLength(); n++ ) { PROPERTIES.put( array.get( n, 0 ), array.get( n, 1 ) ); } } } catch( Exception e ) { e.printStackTrace(); } } protected String createContent( Hashtable parameters, String[] form_fields, String template ) { VelocityContext context = new VelocityContext(); StringWriter output = new StringWriter(); try { for( int i = 0; i < form_fields.length; i++ ) { context.put( form_fields[ i ], parameters.get( form_fields[ i ] ) ); } Velocity.mergeTemplate( template, Velocity.ENCODING_DEFAULT, context, output ); return output.toString(); } catch( Exception e ) { e.printStackTrace(); } return null; } protected String showResultPage( boolean success, String success_template, String fail_template ) { VelocityContext context = new VelocityContext(); StringWriter output = new StringWriter(); String template; if( success ) { template = success_template; } else { template = fail_template; } try { Velocity.mergeTemplate( template, Velocity.ENCODING_DEFAULT, context, output ); return output.toString(); } catch( Exception e ) { e.printStackTrace(); } return null; } protected boolean sendMail( String from, String destination, String subject, String content, boolean html ) { String smtp_server = "localhost"; String mailer = "Evolute Mailer"; Properties props = System.getProperties(); props.put( "mail.smtp.host", smtp_server ); String content_type = ( html ) ? "text/html" : "text/plain"; Session session = Session.getInstance( props, null ); Message msg = new MimeMessage( session ); try { if( from != null ) { msg.setFrom( new InternetAddress( from ) ); } msg.setRecipients( Message.RecipientType.TO, InternetAddress.parse( destination, true ) ); msg.setSubject( subject ); msg.setContent( content.toString(), content_type ); msg.setHeader( "X-Mailer", mailer ); msg.setSentDate( new java.util.Date() ); Transport.send( msg ); return true; } catch( Exception e ) { e.printStackTrace(); } return false; } private String checkParameter( String parameter ) { if( parameter != null && parameter.trim().length() > 0 ) { return parameter.trim(); } return null; } protected Hashtable parseParameters( Hashtable parameters ) { Hashtable tmp = new Hashtable(); String[] element; String key; String new_element; for( Enumeration e = parameters.keys(); e.hasMoreElements(); ) { key = ( String ) e.nextElement(); element = ( String[] ) parameters.get( key ); if( element != null ) { new_element = checkParameter( element[ 0 ] ); if( new_element != null ) { tmp.put( key, new_element ); } } } return tmp; } }