OK, I take back what I said about JavaMail being heavy. But a related question, is
the implementation from Sun a complete, production quality release, or is it a base
level implementation for which you have to buy other people's extensions to make
work?
David Wall wrote:
> > You don't need anything as heavy as JavaMail to do something as simple as
> this -
> > just open a connection to port 25 of your mail server and talk SMTP
> protocol to it.
> > About 50 lines of code would do it, and there will be plenty of examples
> around to
> > copy from.
>
> Don't do it. JavaMail is very easy to use and why it would be considered
> heavy is beyond my understanding. This is a rather simplified, not entirely
> elegant version we use for our low-tech testing, but it has the main parts
> to make it more parameterized, etc.
>
> // Copyright (c) 1999 ExperTrade Corporation. All rights reserved.
> // This file is proprietary and confidential.
>
> package com.expertrade.servlet;
>
> import java.util.Properties;
>
> import javax.mail.Message;
> import javax.mail.Session;
> import javax.mail.Transport;
> import javax.mail.internet.InternetAddress;
> import javax.mail.internet.MimeMessage;
>
> import javax.servlet.*;
> import javax.servlet.http.*;
>
> /**
> * This accepts a page and sends an email with the relevant info via email.
> *
> * @author David Wall
> */
> public class FormEmailer
> extends HttpServlet
> {
> public void doGet(HttpServletRequest req, HttpServletResponse res)
> throws ServletException, java.io.IOException
> {
> doPost( req, res );
> }
>
> public void doPost(HttpServletRequest req, HttpServletResponse res)
> throws ServletException, java.io.IOException
> {
> res.setStatus(HttpServletResponse.SC_NO_CONTENT);
>
> // Get the two required parameters
> String [] requestedDataArray = null;
>
> requestedDataArray = req.getParameterValues(PARAM_EMAIL_TO);
> if ( requestedDataArray == null )
> throw new ServletException("Missing parameter: " +
> PARAM_EMAIL_TO);
> String emailTo = requestedDataArray[0];
>
> requestedDataArray = req.getParameterValues(PARAM_EMAIL_SUBJECT);
> if ( requestedDataArray == null )
> throw new ServletException("Missing parameter: " +
> PARAM_EMAIL_SUBJECT);
> String emailSubject = requestedDataArray[0];
>
> InternetAddress[] toAddresses = new InternetAddress[1];
> try
> {
> toAddresses[0] = new InternetAddress(emailTo);
> }
> catch( javax.mail.internet.AddressException e )
> {
> throw new ServletException("Invalid email TO address: " +
> emailTo + " - " + e.getMessage() );
> }
>
> // Get all of the form fields...
> java.util.Enumeration params = req.getParameterNames();
>
> StringBuffer message = new StringBuffer(1000);
>
> message.append("TO: ").append(emailTo).append("\n");
> message.append("SUBJECT: ").append(emailSubject).append("\n\n");
>
> while( params.hasMoreElements() )
> {
> String name = (String)params.nextElement();
> if ( name.equals(PARAM_EMAIL_TO) ||
> name.equals(PARAM_EMAIL_SUBJECT) )
> continue;
>
> requestedDataArray = req.getParameterValues(name);
> if ( requestedDataArray != null )
> {
> message.append(name).append(": ");
> if ( requestedDataArray.length > 0 )
> {
> for( int i=0; i < requestedDataArray.length; ++i )
> {
> if ( i != 0 )
> message.append(" ");
> message.append(requestedDataArray[i]).append("\n");
> }
> }
> else
> message.append("\n");
> }
> }
>
> message.append("\n");
> message.append("\nRemote user:
> ").append(req.getRemoteUser()).append("\n");
> message.append("Remote address:
> ").append(req.getHeader("REMOTE_ADDR")).append("\n");
> message.append("Remote host:
> ").append(req.getHeader("REMOTE_HOST")).append("\n");
> message.append("Browser:
> ").append(req.getHeader("User-Agent")).append("\n").append("<EOM>\n");
>
> // Register them
> prepareEmail(req,res,toAddresses,emailSubject,message.toString());
> }
>
> public String getServletInfo()
> {
> return "FormEmailer, Version 1.0 (14FEB99), ExperTrade Corporation";
> }
>
> /**
> * Called whenever the servlet is installed into the web server.
> */
> public void init( ServletConfig config )
> throws ServletException
> {
> try
> {
> fromAddress = new InternetAddress("[EMAIL PROTECTED]");
> // use a resource parameter instead!
> }
> catch( javax.mail.internet.AddressException e )
> {
> throw new ServletException("Invalid from email address: " +
> e.getMessage() );
> }
>
> String smtpServer = config.getInitParameter(PARAM_SMTP_SERVER);
> if ( smtpServer == null )
> throw new ServletException("Missing servlet parameter: " +
> PARAM_SMTP_SERVER);
>
> Properties prop = new Properties();
> prop.put("mail.smtp.host",smtpServer);
> session = Session.getDefaultInstance(prop,null);
>
> super.init(config);
> }
>
> /**
> * Called whenever the servlet is removed from the web server.
> */
> public void destroy()
> {
> session = null;
> super.destroy();
> }
>
> void prepareEmail( HttpServletRequest req,
> HttpServletResponse res,
> InternetAddress[] toAddresses,
> String subject,
> String message
> )
> throws ServletException, java.io.IOException
> {
> boolean isOkay = true;
>
> res.setContentType("text/html");
> res.setHeader("pragma", "no-cache");
> ServletOutputStream out = res.getOutputStream();
>
> writeHeader(out);
>
> try
> {
> if ( ! sendEmail( toAddresses, subject, message ) )
> {
> throw new java.io.IOException("Failed to send email");
> }
> }
> catch(java.io.IOException e)
> {
> if ( isOkay )
> out.println("<H1>Sorry!</H1>");
> out.println("<P>We were unable to record your information.
> Please try again later.");
> isOkay = false;
> }
>
> if ( isOkay )
> {
> out.println("<H1>Thank you!</H1>");
> out.println("<P>This form has been submitted successfully.");
> }
>
> writeFooter(out);
> }
>
> boolean sendEmail( InternetAddress[] toAddresses,
> String subject,
> String message
> )
> throws ServletException, java.io.IOException
> {
>
> try
> {
> Message msg = new MimeMessage(session);
>
> msg.setFrom(fromAddress);
> msg.setRecipients(Message.RecipientType.TO, toAddresses);
> msg.setSubject(subject);
> msg.setContent(message, "text/plain" );
>
> Transport.send( msg );
> return true;
> }
> catch( javax.mail.MessagingException e )
> {
> throw new java.io.IOException("Failed to send Email: " +
> e.getMessage());
> }
> }
>
> // ****************** Instance variables *******************
> private Session session = null;
> private InternetAddress fromAddress = null;
>
> private static final String NBSP = " ";
> private static final String GREEN = "\"#009900\"";
> private static final String RED = "\"#FF0000\"";
> private static final String BLACK = "\"#000000\"";
>
> // HTML PARAM required fields
> private static final String PARAM_EMAIL_TO = "EmailTo";
> private static final String PARAM_EMAIL_SUBJECT = "EmailSubject";
>
> // Servlet INIT param
> private static final String PARAM_SMTP_SERVER = "smtpServer";
>
> } // FormEmailer
>
> // eof: FormEmailer.java
>
> ===========================================================================
> To unsubscribe: mailto [EMAIL PROTECTED] with body: "signoff JSP-INTEREST".
> FAQs on JSP can be found at:
> http://java.sun.com/products/jsp/faq.html
> http://www.esperanto.org.nz/jsp/jspfaq.html
===========================================================================
To unsubscribe: mailto [EMAIL PROTECTED] with body: "signoff JSP-INTEREST".
FAQs on JSP can be found at:
http://java.sun.com/products/jsp/faq.html
http://www.esperanto.org.nz/jsp/jspfaq.html