MailMessageBean.java 2.19 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.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)
     */
    public void onMessage(Message message) {

        MailMessage mailmsg = null;
        try {
            mailmsg = (MailMessage) ((ObjectMessage) message).getObject();
            logger.debug("Got message {}", mailmsg.getToName());
            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);
        }

    }
}