package org.toobs.framework.jms.email; import javax.mail.MessagingException; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.springframework.beans.factory.access.BeanFactoryLocator; import org.springframework.beans.factory.access.BeanFactoryReference; import org.springframework.mail.MailException; import org.toobs.framework.email.SmtpMailSender; import org.toobs.framework.email.beans.EmailBean; public class EmailMessageSender implements IEmailMessageSender { private static Log log = LogFactory.getLog(EmailMessageSender.class); private JmsEmailSender jmsSender = null; public JmsEmailSender getJmsSender() { return this.jmsSender; } public void setJmsSender(JmsEmailSender jmsSender) { this.jmsSender = jmsSender; } public void send(EmailBean emailBean) throws JmsEmailException { try { if (log.isDebugEnabled()) { log.debug("Sending Email message to JMS Sender "); } jmsSender.sendMessage(emailBean); if (log.isDebugEnabled()) { log.debug("Email message sent to JMS Sender "); } } catch(Exception e) { log.warn("JmsEmail failed: " + e.getMessage() + " trying direct", e); BeanFactoryLocator bfl = org.springframework.beans.factory.access.SingletonBeanFactoryLocator.getInstance(); BeanFactoryReference bf = bfl.useBeanFactory("beanRefFactory"); SmtpMailSender sender = (SmtpMailSender)bf.getFactory().getBean("SmtpMailSender"); try { sender.sendEmail(emailBean); } catch (MailException e1) { log.error("Email exception: " + e.getMessage(), e); throw new JmsEmailException(e); } catch (MessagingException e1) { log.error("Email exception: " + e.getMessage(), e); throw new JmsEmailException(e); } } } }