MailMessageBean.java 2.39 KB
package fi.insomnia.bortal.beans;

import java.io.UnsupportedEncodingException;

import javax.annotation.Resource;
import javax.ejb.ActivationConfigProperty;
import javax.ejb.MessageDriven;
import javax.jms.JMSException;
import javax.jms.Message;
import javax.jms.MessageListener;
import javax.jms.ObjectMessage;
import javax.mail.MessagingException;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.MimeMessage.RecipientType;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import fi.insomnia.bortal.clientutils.BortalLocalContextHolder;
import fi.insomnia.bortal.util.MailMessage;

/**
 * Message-Driven Bean implementation class for: MailMessageBean
 * 
 */
@MessageDriven(activationConfig = { @ActivationConfigProperty(propertyName = "destinationType", propertyValue = "javax.jms.Queue") }, mappedName = "jms/mailque")
public class MailMessageBean implements MessageListener {

	@Resource(name = "mail/lanbortal")
	private Session mailSession;
	private static final Logger logger = LoggerFactory
			.getLogger(MailMessageBean.class);

	/**
	 * Default constructor.
	 */
	public MailMessageBean() {
		// TODO Auto-generated constructor stub
	}

	/**
	 * @see MessageListener#onMessage(Message)
	 */
	@Override
	public void onMessage(Message message) {

		MailMessage mailmsg = null;
		try {
			mailmsg = (MailMessage) ((ObjectMessage) message).getObject();
			logger.debug("Got message {}", mailmsg.getToName());

			if (BortalLocalContextHolder.isInDevelopmentMode()) {
				String dmessage =  " To: "
						+ mailmsg.getTo() + "\n Subject: "
						+ mailmsg.getSubject() + "\n Text: "
						+ mailmsg.getMessage() + "\n";

				logger.debug("Not sendet mail (debug -mode): {}", dmessage);
			} else {
				
				MimeMessage msg = new MimeMessage(mailSession);
				msg.setSubject(mailmsg.getSubject());
				msg.setFrom(mailmsg.getFrom());
				msg.setRecipient(RecipientType.TO, mailmsg.getTo());
				msg.setText(mailmsg.getMessage(), mailmsg.getCharset());

				Transport.send(msg);
			}

		} catch (JMSException e) {
			logger.debug("Error receiving jms for {}", mailmsg, e);
		} catch (MessagingException e) {
			logger.debug(
					"Unsupported encoding exception while sending mail to {}",
					mailmsg, e);
		} catch (UnsupportedEncodingException e) {
			logger.debug(
					"Unsupported encoding exception while sending mail to {}",
					mailmsg, e);
		}

	}
}