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

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

commit 407bd3d88928490caaf9887972c709714c240cba
Author: Volkan Yazıcı <[email protected]>
AuthorDate: Tue Oct 19 23:40:40 2021 +0200

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

diff --git 
a/log4j-smtp/src/main/java/org/apache/logging/log4j/smtp/appender/SmtpManager.java
 
b/log4j-smtp/src/main/java/org/apache/logging/log4j/smtp/appender/SmtpManager.java
index 2e1f0e9..aa5b048 100644
--- 
a/log4j-smtp/src/main/java/org/apache/logging/log4j/smtp/appender/SmtpManager.java
+++ 
b/log4j-smtp/src/main/java/org/apache/logging/log4j/smtp/appender/SmtpManager.java
@@ -189,7 +189,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);
@@ -274,6 +276,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);
@@ -282,6 +288,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-smtp/src/test/java/org/apache/logging/log4j/smtp/appender/SmtpAppenderTest.java
 
b/log4j-smtp/src/test/java/org/apache/logging/log4j/smtp/appender/SmtpAppenderTest.java
index ed2f4c8..596de00 100644
--- 
a/log4j-smtp/src/test/java/org/apache/logging/log4j/smtp/appender/SmtpAppenderTest.java
+++ 
b/log4j-smtp/src/test/java/org/apache/logging/log4j/smtp/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,9 +166,12 @@ 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"));
         assertTrue(body2.contains("Error message #2"));
     }
-}
+}
\ No newline at end of file
diff --git a/src/changes/changes.xml b/src/changes/changes.xml
index a3189f5..00172f4 100644
--- a/src/changes/changes.xml
+++ b/src/changes/changes.xml
@@ -333,6 +333,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>
     </release>
     <release version="2.14.1" date="2021-03-06" description="GA Release 
2.14.1">
       <!-- FIXES -->

Reply via email to