1 22 23 package org.objectweb.petals.binding.mail.listeners; 24 25 import java.util.logging.Logger ; 26 27 import javax.mail.Session ; 28 import javax.mail.internet.InternetAddress ; 29 import javax.mail.internet.MimeMessage ; 30 31 import org.objectweb.petals.component.common.HandlingException; 32 import org.objectweb.petals.component.common.bc.JBIListener; 33 import org.objectweb.petals.component.common.util.MessageExchangeWrapper; 34 import org.objectweb.petals.tools.jbicommon.descriptor.Extensions; 35 36 42 public class MailBCJBIListener implements JBIListener { 43 44 protected Logger log; 45 46 protected MailSessionManager mailSessionManager; 47 48 protected MimeMessageManager mimeMessageManager; 49 50 protected SessionDescriptorBuilder sessionDescriptorBuilder; 51 52 60 public MailBCJBIListener(MimeMessageManager mimeMessageManager, 61 MailSessionManager mailSessionManager, 62 SessionDescriptorBuilder sessionDescriptorBuilder, Logger log) { 63 super(); 64 this.log = log; 65 this.mimeMessageManager = mimeMessageManager; 66 this.mailSessionManager = mailSessionManager; 67 this.sessionDescriptorBuilder = sessionDescriptorBuilder; 68 } 69 70 74 public boolean onJBIMessage(String address, MessageExchangeWrapper exchange, 75 Extensions extensions) throws HandlingException { 76 77 if (!exchange.isInOnlyPattern()) { 78 throw new HandlingException( 79 "Mail BC can only handle InOnly message exchanges"); 80 } 81 82 try { 83 SessionDescriptor sessionDescriptor = sessionDescriptorBuilder 85 .build(address, exchange); 86 87 InternetAddress internetAddress = new InternetAddress ( 89 sessionDescriptor.getToAddress()); 90 91 Session session = mailSessionManager 93 .createSessionPropertiesFromDescriptor(sessionDescriptor); 94 95 MimeMessage mimeMessage = mimeMessageManager 97 .mapNormalizedMessageToMimeMessage(session, 98 internetAddress, exchange.getInMessage()); 99 100 mailSessionManager 102 .sendMail(mimeMessage, sessionDescriptor, session); 103 104 } catch (Throwable e) { 105 throw new HandlingException(e); 106 } 107 return false; 108 } 109 110 } 111 | Popular Tags |