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.PropsValues;
34 import com.liferay.util.mail.MailEngine;
35
36 import javax.mail.internet.InternetAddress;
37
38
43 public class MailMessageListener implements MessageListener {
44
45 public void receive(Message message) {
46 try {
47 doReceive(message);
48 }
49 catch (Exception e) {
50 _log.error("Unable to process message " + message, e);
51 }
52 }
53
54 public void doMailMessage(MailMessage mailMessage) throws Exception {
55 InternetAddress[] auditTrail = InternetAddress.parse(
56 PropsValues.MAIL_AUDIT_TRAIL);
57
58 if (auditTrail.length > 0) {
59 InternetAddress[] bcc = mailMessage.getBCC();
60
61 if (bcc != null) {
62 InternetAddress[] allBCC = new InternetAddress[
63 bcc.length + auditTrail.length];
64
65 ArrayUtil.combine(bcc, auditTrail, allBCC);
66
67 mailMessage.setBCC(allBCC);
68 }
69 else {
70 mailMessage.setBCC(auditTrail);
71 }
72 }
73
74 MailEngine.send(mailMessage);
75 }
76
77 public void doMethodWrapper(MethodWrapper methodWrapper) throws Exception {
78 MethodInvoker.invoke(methodWrapper);
79 }
80
81 public void doReceive(Message message) throws Exception {
82 Object payload = message.getPayload();
83
84 if (payload instanceof MailMessage) {
85 doMailMessage((MailMessage)payload);
86 }
87 else if (payload instanceof MethodWrapper) {
88 doMethodWrapper((MethodWrapper)payload);
89 }
90 }
91
92 private static Log _log = LogFactoryUtil.getLog(MailMessageListener.class);
93
94 }