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

vy pushed a commit to branch release-2.x
in repository https://gitbox.apache.org/repos/asf/logging-log4j2.git


The following commit(s) were added to refs/heads/release-2.x by this push:
     new dff84c2  LOG4J2-3174 Fix handling of LogEvent-dependent subjects in 
SmtpManager. (#589)
dff84c2 is described below

commit dff84c2868dfc7f4bf573962689c535565d89804
Author: romainmoreau <[email protected]>
AuthorDate: Tue Oct 19 22:52:51 2021 +0200

    LOG4J2-3174 Fix handling of LogEvent-dependent subjects in SmtpManager. 
(#589)
    
    Co-authored-by: Romain Moreau <[email protected]>
---
 .../org/apache/logging/log4j/core/net/SmtpManager.java  | 17 ++++++++++++++++-
 .../logging/log4j/core/appender/SmtpAppenderTest.java   |  8 +++++---
 src/changes/changes.xml                                 |  3 +++
 3 files changed, 24 insertions(+), 4 deletions(-)

diff --git 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/net/SmtpManager.java 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/net/SmtpManager.java
index 07dbba9..af16c9a 100644
--- 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/net/SmtpManager.java
+++ 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/net/SmtpManager.java
@@ -184,7 +184,9 @@ public class SmtpManager extends AbstractManager {
             final InternetHeaders headers = getHeaders(contentType, encoding);
             final MimeMultipart mp = getMimeMultipart(encodedBytes, headers);
 
-            sendMultipartMessage(message, mp);
+            final String subject = data.subject.toSerializable(appendEvent);
+
+            sendMultipartMessage(message, mp, subject);
         } catch (final MessagingException | IOException | RuntimeException e) {
             logError("Caught exception while sending e-mail notification.", e);
             throw new LoggingException("Error occurred while sending email", 
e);
@@ -269,6 +271,10 @@ public class SmtpManager extends AbstractManager {
         return mp;
     }
 
+    /**
+     * @deprecated Please use the {@link #sendMultipartMessage(MimeMessage, 
MimeMultipart, String)} method instead.
+     */
+    @Deprecated
     protected void sendMultipartMessage(final MimeMessage msg, final 
MimeMultipart mp) throws MessagingException {
         synchronized (msg) {
             msg.setContent(mp);
@@ -277,6 +283,15 @@ public class SmtpManager extends AbstractManager {
         }
     }
 
+    protected void sendMultipartMessage(final MimeMessage msg, final 
MimeMultipart mp, final String subject) throws MessagingException {
+        synchronized (msg) {
+            msg.setContent(mp);
+            msg.setSentDate(new Date());
+            msg.setSubject(subject);
+            Transport.send(msg);
+        }
+    }
+
     /**
      * Factory data.
      */
diff --git 
a/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/SmtpAppenderTest.java
 
b/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/SmtpAppenderTest.java
index d595d16..2a4cf4c 100644
--- 
a/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/SmtpAppenderTest.java
+++ 
b/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/SmtpAppenderTest.java
@@ -120,7 +120,7 @@ public class SmtpAppenderTest {
                 .setBcc("[email protected]")
                 .setFrom("[email protected]")
                 .setReplyTo("[email protected]")
-                .setSubject("Subject Pattern %X{" + subjectKey + "}")
+                .setSubject("Subject Pattern %X{" + subjectKey + "} 
%maxLen{%m}{10}")
                 .setSmtpHost(HOST)
                 .setSmtpPort(smtpPort)
                 .setBufferSize(3)
@@ -153,8 +153,7 @@ public class SmtpAppenderTest {
         // can't be tested with Dumpster 1.6
         assertEquals("[email protected]", email.getHeaderValue("From"));
         assertEquals("[email protected]", email.getHeaderValue("Reply-To"));
-        final String headerValue = email.getHeaderValue("Subject");
-        assertEquals(headerValue, "Subject Pattern " + subjectValue);
+        assertEquals("Subject Pattern " + subjectValue +" Error with", 
email.getHeaderValue("Subject"));
 
         final String body = email.getBody();
         assertFalse(body.contains("Debug message #1"));
@@ -167,6 +166,9 @@ public class SmtpAppenderTest {
         assertFalse(body.contains("Error message #2"));
 
         final SmtpMessage email2 = messages.next();
+
+        assertEquals("Subject Pattern " + subjectValue +" Error mess", 
email2.getHeaderValue("Subject"));
+
         final String body2 = email2.getBody();
         assertFalse(body2.contains("Debug message #4"));
         assertFalse(body2.contains("Error with exception"));
diff --git a/src/changes/changes.xml b/src/changes/changes.xml
index ec9ac16..ae2b3db 100644
--- a/src/changes/changes.xml
+++ b/src/changes/changes.xml
@@ -178,6 +178,9 @@
       <action issue="LOG4J2-3095" dev="ggregory" type="fix" due-to="Kenny 
MacLeod, Gary Gregory">
         Category.setLevel should accept null value.
       </action>
+      <action issue="LOG4J2-3174" dev="vy" type="fix" due-to="romainmoreau">
+        Wrong subject on mail when it depends on the LogEvent
+      </action>
       <!-- UPDATES -->
       <action dev="ggregory" type="update">
        - com.fasterxml.jackson.core:jackson-annotations ................. 
2.12.2 -> 2.12.4

Reply via email to