package org.toobs.framework.jms.email; import java.util.List; import javax.jms.JMSException; import javax.jms.MapMessage; import javax.jms.Message; import javax.jms.Session; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.springframework.jms.core.MessageCreator; import org.toobs.framework.email.beans.EmailBean; import org.toobs.framework.jms.AbstractJmsSender; public class JmsEmailSender extends AbstractJmsSender { private static Log log = LogFactory.getLog(JmsEmailSender.class); public void sendMessage(final EmailBean emailBean) { jmsTemplate.send(new MessageCreator() { public Message createMessage(Session session) throws JMSException { MapMessage mapMessage = null; try { mapMessage = session.createMapMessage(); mapMessage.setString("sender", emailBean.getEmailSender()); mapMessage.setString("subject", emailBean.getEmailSubject()); mapMessage.setString("recipients", getRecipientList(emailBean.getRecipients())); mapMessage.setString("messageText", emailBean.getMessageText()); mapMessage.setString("messageHtml", emailBean.getMessageHtml()); mapMessage.setString("mailSenderKey", emailBean.getMailSenderKey()); mapMessage.setInt("attempts", emailBean.getAttempts()); mapMessage.setInt("type", emailBean.getType()); mapMessage.setString("failureCause", emailBean.getFailureCause()); } catch (Exception e) { log.error("JMS Mail exception " + e.getMessage(), e); throw new JMSException(e.getMessage()); } return mapMessage; } }); } private String getRecipientList(List recipientList) { StringBuffer sb = new StringBuffer(); for (int i=0; i<recipientList.size(); i++) { if (i != 0) sb.append(","); sb.append((String)recipientList.get(i)); } return sb.toString(); } }