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