[ofbiz-framework] branch release17.12 updated: Fixed: Potensial bug under CommunicationEventServices#updateCommEventAfterEmail for CommunicationEvent.subject field (OFBIZ-10879)

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
1 message Options
Reply | Threaded
Open this post in threaded view
|

[ofbiz-framework] branch release17.12 updated: Fixed: Potensial bug under CommunicationEventServices#updateCommEventAfterEmail for CommunicationEvent.subject field (OFBIZ-10879)

Pawan Verma-2
This is an automated email from the ASF dual-hosted git repository.

pawan pushed a commit to branch release17.12
in repository https://gitbox.apache.org/repos/asf/ofbiz-framework.git


The following commit(s) were added to refs/heads/release17.12 by this push:
     new 9706acf  Fixed: Potensial bug under CommunicationEventServices#updateCommEventAfterEmail for CommunicationEvent.subject field (OFBIZ-10879)
9706acf is described below

commit 9706acf064e26c291c0bd10081df8286ae6b359b
Author: Pawan Verma <[hidden email]>
AuthorDate: Sat Jan 25 15:54:37 2020 +0530

    Fixed: Potensial bug under CommunicationEventServices#updateCommEventAfterEmail for CommunicationEvent.subject field
    (OFBIZ-10879)
   
    CommunicationEventServices#updateCommEventAfterEmail could generate wrong result. If general.properties value 'mail.notifications.redirectTo' is used, it is possible that the subject string has more than 255 character.
   
    Thanks, Ulrich Heidfeld for your contribution.
---
 .../communication/CommunicationEventServices.java  | 23 ++++++++++++++++++++++
 1 file changed, 23 insertions(+)

diff --git a/applications/party/src/main/java/org/apache/ofbiz/party/communication/CommunicationEventServices.java b/applications/party/src/main/java/org/apache/ofbiz/party/communication/CommunicationEventServices.java
index 759008f..507d97c 100644
--- a/applications/party/src/main/java/org/apache/ofbiz/party/communication/CommunicationEventServices.java
+++ b/applications/party/src/main/java/org/apache/ofbiz/party/communication/CommunicationEventServices.java
@@ -43,6 +43,7 @@ import javax.mail.internet.InternetAddress;
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 
+import org.apache.commons.lang.StringUtils;
 import org.apache.ofbiz.base.location.FlexibleLocation;
 import org.apache.ofbiz.base.util.Debug;
 import org.apache.ofbiz.base.util.GeneralException;
@@ -607,6 +608,7 @@ public class CommunicationEventServices {
      */
     public static Map<String, Object> updateCommEventAfterEmail(DispatchContext dctx, Map<String, ? extends Object> context) {
         LocalDispatcher dispatcher = dctx.getDispatcher();
+        Delegator delegator = dctx.getDelegator();
 
         GenericValue userLogin = (GenericValue) context.get("userLogin");
         String communicationEventId = (String) context.get("communicationEventId");
@@ -622,6 +624,27 @@ public class CommunicationEventServices {
         commEventMap.put("userLogin", userLogin);
         commEventMap.put("content", wrapper.getMessageBody());
 
+        String subject = wrapper.getSubject();
+        String redirectAddress = EntityUtilProperties.getPropertyValue("general",
+                "mail.notifications.redirectTo", delegator);
+        if (UtilValidate.isNotEmpty(redirectAddress) && subject.endsWith("]") && subject.contains(" [To: ")) {
+            // Format of subject for redirected mail from sendMail service:
+            // "Original subject [To: <sendTo>, Cc: <sendCc>, Bcc: <sendBcc>]"
+            String origSendTo = StringUtils.substringBetween(subject, "[To: ", ", Cc:");
+            String origSendCc = StringUtils.substringBetween(subject, ", Cc: ", ", Bcc:");
+            String origSendBcc = StringUtils.substringBetween(subject, ", Bcc: ", "]");
+
+            // ignore "null" Strings in subject
+            if (origSendTo != "null") commEventMap.put("toString", origSendTo);
+            if (origSendCc != "null") commEventMap.put("ccString", origSendCc);
+            if (origSendBcc != "null") commEventMap.put("bccString", origSendBcc);
+
+            // Format of subject in commEvent: "Original subject [RedirectedTo: [hidden email]]"
+            subject = StringUtils.substringBefore(subject, "[To: ")
+                    + "[RedirectedTo: " + commEventMap.get("fromString") + "]";
+            commEventMap.put("subject", StringUtils.abbreviate(subject, 255));
+        }
+
         // populate the address (to/from/cc/bcc) data
         populateAddressesFromMessage(wrapper, commEventMap);