1
22
23 package com.liferay.mail.messaging;
24
25 import com.liferay.portal.kernel.log.Log;
26 import com.liferay.portal.kernel.log.LogFactoryUtil;
27 import com.liferay.portal.kernel.mail.MailMessage;
28 import com.liferay.portal.kernel.messaging.Message;
29 import com.liferay.portal.kernel.messaging.MessageListener;
30 import com.liferay.portal.kernel.util.ArrayUtil;
31 import com.liferay.portal.kernel.util.MethodInvoker;
32 import com.liferay.portal.kernel.util.MethodWrapper;
33 import com.liferay.portal.util.PropsKeys;
34 import com.liferay.portal.util.PropsUtil;
35 import com.liferay.util.mail.MailEngine;
36
37 import javax.mail.internet.InternetAddress;
38
39
45 public class MailMessageListener implements MessageListener {
46
47 public void receive(Message 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 doMailMessage(MailMessage mailMessage) throws Exception {
57 InternetAddress[] auditTrail = InternetAddress.parse(
58 PropsUtil.get(PropsKeys.MAIL_AUDIT_TRAIL));
59
60 if (auditTrail.length > 0) {
61 InternetAddress[] bcc = mailMessage.getBCC();
62
63 if (bcc != null) {
64 InternetAddress[] allBCC = new InternetAddress[
65 bcc.length + auditTrail.length];
66
67 ArrayUtil.combine(bcc, auditTrail, allBCC);
68
69 mailMessage.setBCC(allBCC);
70 }
71 else {
72 mailMessage.setBCC(auditTrail);
73 }
74 }
75
76 MailEngine.send(mailMessage);
77 }
78
79 public void doMethodWrapper(MethodWrapper methodWrapper) throws Exception {
80 MethodInvoker.invoke(methodWrapper);
81 }
82
83 public void doReceive(Message message) throws Exception {
84 Object payload = message.getPayload();
85
86 if (payload instanceof MailMessage) {
87 doMailMessage((MailMessage)payload);
88 }
89 else if (payload instanceof MethodWrapper) {
90 doMethodWrapper((MethodWrapper)payload);
91 }
92 }
93
94 private static Log _log = LogFactoryUtil.getLog(MailMessageListener.class);
95
96 }