1
22
23 package com.liferay.mail.messaging;
24
25 import com.liferay.portal.kernel.mail.MailMessage;
26 import com.liferay.portal.kernel.messaging.MessageListener;
27 import com.liferay.portal.kernel.util.ArrayUtil;
28 import com.liferay.portal.kernel.util.MethodInvoker;
29 import com.liferay.portal.kernel.util.MethodWrapper;
30 import com.liferay.portal.util.PropsKeys;
31 import com.liferay.portal.util.PropsUtil;
32 import com.liferay.util.mail.MailEngine;
33
34 import javax.mail.internet.InternetAddress;
35
36 import org.apache.commons.logging.Log;
37 import org.apache.commons.logging.LogFactory;
38
39
45 public class MailMessageListener implements MessageListener {
46
47 public void receive(Object message) {
48 try {
49 doReceive(message);
50 }
51 catch (Exception e) {
52 _log.error("Unable to process message " + message, e);
53 }
54 }
55
56 public void receive(String message) {
57 throw new UnsupportedOperationException();
58 }
59
60 public void doMailMessage(MailMessage mailMessage) throws Exception {
61 InternetAddress[] auditTrail = InternetAddress.parse(
62 PropsUtil.get(PropsKeys.MAIL_AUDIT_TRAIL));
63
64 if (auditTrail.length > 0) {
65 InternetAddress[] bcc = mailMessage.getBCC();
66
67 if (bcc != null) {
68 InternetAddress[] allBCC = new InternetAddress[
69 bcc.length + auditTrail.length];
70
71 ArrayUtil.combine(bcc, auditTrail, allBCC);
72
73 mailMessage.setBCC(allBCC);
74 }
75 else {
76 mailMessage.setBCC(auditTrail);
77 }
78 }
79
80 MailEngine.send(mailMessage);
81 }
82
83 public void doMethodWrapper(MethodWrapper methodWrapper) throws Exception {
84 MethodInvoker.invoke(methodWrapper);
85 }
86
87 public void doReceive(Object message) throws Exception {
88 if (message instanceof MailMessage) {
89 doMailMessage((MailMessage)message);
90 }
91 else if (message instanceof MethodWrapper) {
92 doMethodWrapper((MethodWrapper)message);
93 }
94 }
95
96 private static Log _log = LogFactory.getLog(MailMessageListener.class);
97
98 }