View Javadoc

1   package uk.ac.ebi.intenz.webapp.controller;
2   
3   import java.io.IOException;
4   
5   import javax.mail.Address;
6   import javax.mail.Message;
7   import javax.mail.MessagingException;
8   import javax.mail.Session;
9   import javax.mail.Transport;
10  import javax.mail.internet.InternetAddress;
11  import javax.mail.internet.MimeMessage;
12  import javax.servlet.ServletException;
13  import javax.servlet.ServletRequest;
14  import javax.servlet.ServletResponse;
15  import javax.servlet.http.HttpServlet;
16  import javax.servlet.http.HttpServletRequest;
17  import javax.servlet.http.HttpServletResponse;
18  
19  import org.apache.log4j.Logger;
20  
21  import uk.ac.ebi.biobabel.util.StringUtil;
22  import uk.ac.ebi.intenz.webapp.IntEnzConfig;
23  
24  public class IntEnzContactServlet extends HttpServlet {
25  
26  	public static final Logger LOGGER = Logger.getLogger(IntEnzContactServlet.class);
27  	
28  	public void init() throws ServletException {
29  		super.init();
30  	}
31  
32  	public void doGet(HttpServletRequest request, HttpServletResponse response)
33  	throws ServletException, IOException {
34  		getServletContext().getRequestDispatcher("/contact.jsp").forward(request, response);
35  	}
36  
37  	public void doPost(HttpServletRequest request, HttpServletResponse response)
38  	throws ServletException, IOException {
39  
40  		if (request.getParameter("intenzMail") == null){
41  			getServletContext().getRequestDispatcher("/contact.jsp").forward(request, response);
42  		}
43  
44  		String from = request.getParameter("email");
45  //		String subject = request.getParameter("subject");
46  		String messageText = request.getParameter("message");
47  		
48  		if (StringUtil.isNullOrEmpty(from)){
49  			processError(request, response, "The e-mail address must not be empty!");
50  			return;
51  		}
52  		if (StringUtil.isNullOrEmpty(messageText)){
53  			processError(request, response, "The message text must not be empty!");
54  			return;
55  		}
56  //		if (StringUtil.isNullOrEmpty(subject)) subject = "IntEnz";
57  		
58  		try {
59  			sendMail(from, messageText);
60  			request.setAttribute("sent", Boolean.TRUE);
61  			getServletContext().getRequestDispatcher("/contact.jsp").forward(request, response);
62  		} catch (MessagingException e) {
63  			if (e.getMessage().indexOf("553") > -1){
64  				processError(request, response, "Sorry, the provided e-mail address is not valid.");
65  			} else {
66  				processError(request, response, "Sorry, the message could not be sent. Please try again later.");
67  			}
68  		}
69  	}
70  
71  	private void processError(ServletRequest request, ServletResponse response, String errorText)
72  	throws ServletException, IOException {
73  		request.setAttribute("sent", Boolean.FALSE);
74  		request.setAttribute("error", errorText);
75  		getServletContext().getRequestDispatcher("/contact.jsp").forward(request, response);
76  	}
77  
78  	private void sendMail(String from, String messageText)
79  	throws MessagingException, IOException{
80  		try{
81  			Session mailSession = Session.getInstance(
82  					IntEnzConfig.getInstance().getMailProperties());
83  			MimeMessage message = new MimeMessage(mailSession);
84  			Address fromAddress = new InternetAddress(from);
85  			message.setFrom(fromAddress);
86  			Address[] toAddress =
87  				InternetAddress.parse(IntEnzConfig.getInstance().getContactMailTo());
88  			message.setRecipients(Message.RecipientType.TO, toAddress);
89  			message.setSubject(IntEnzConfig.getInstance().getContactMailSubject());
90  			message.setText(messageText);
91  			Transport.send(message);
92  		} catch (MessagingException e){
93  			LOGGER.error("There has been an error sending an email from " + from, e);
94  			throw e;
95  		}
96  		
97  	}
98  }