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 -->
