package com.elseforif.servlet; import com.elseforif.URLs; import com.elseforif.servlet.utility.constraint.ServletParameters; import com.elseforif.servlet.utility.constraint.JVCServletParameterConstraints; import com.elseforif.servlet.utility.ElseForIfHTMLWriter; import javax.servlet.ServletConfig; import javax.servlet.ServletException; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession; import java.util.Properties; import javax.mail.Session; import javax.mail.internet.MimeMessage; import javax.mail.Message; import javax.mail.internet.InternetAddress; import javax.mail.Transport; /** * This servlet responds to the email form on the Contact page. It sends * an email and then redirects back to the Contact page with a confirmation * message. */ public class ContactEmail extends ElseForIfServlet { private static final String SMTP_HOST = "vancleve.com"; private static final String RECIPIENT_EMAIL = "jason@vancleve.com"; private Session m_session = null; /** * Initialize this servlet for use. * * @param servletConfig an object containing this servlet's configuration */ public void init(ServletConfig servletConfig) throws ServletException { super.init(servletConfig); m_parameterConstraints = new JVCServletParameterConstraints( ATTRIBUTE_CONTACT_EMAIL_PARAMETERS, true); m_parameterConstraints.addRequiredEmailParameter(P_SENDER, false); m_parameterConstraints.addRequiredStringParameter(P_CATEGORY, false); m_parameterConstraints.addRequiredStringParameter(P_BODY, false); } /** * Send an email message to Else For If, then redirect back to the Contact * page. * * @param request a servlet request * @param response the response for that request * @param session the user's session object */ protected void doBoth(HttpServletRequest request, HttpServletResponse response, HttpSession session, ServletParameters in, ElseForIfHTMLWriter out) throws Exception { if (in.getHasErrors()) { redirect(response, URLs.CONTACT + "#emailForm"); return; } if (m_session == null) { Properties props = new Properties(); props.put("mail.smtp.host", SMTP_HOST); props.put("mail.smtp.localhost", SMTP_HOST); m_session = Session.getDefaultInstance(props); } MimeMessage message = new MimeMessage(m_session); message.setFrom(new InternetAddress(in.S(P_SENDER))); message.addRecipient(Message.RecipientType.TO, new InternetAddress(RECIPIENT_EMAIL)); message.setSubject("Contact Form (category: " + in.S(P_CATEGORY) + ")."); message.setText(in.S(P_BODY)); Transport.send(message); redirect(response, URLs.CONTACT + "?" + P_CONFIRMED + "=true"); } }