Index: core/src/test/java/org/apache/logging/log4j/core/appender/SMTPAppenderTest.java =================================================================== --- core/src/test/java/org/apache/logging/log4j/core/appender/SMTPAppenderTest.java (revision 1513588) +++ core/src/test/java/org/apache/logging/log4j/core/appender/SMTPAppenderTest.java (working copy) @@ -16,6 +16,8 @@ */ package org.apache.logging.log4j.core.appender; +import java.util.Iterator; + import javax.mail.Address; import javax.mail.Message; import javax.mail.MessagingException; @@ -146,10 +148,12 @@ root.debug("Debug message #3"); root.debug("Debug message #4"); root.error("Error with exception", new RuntimeException("Exception message")); + root.error("Error message #2"); server.stop(); - assertTrue(server.getReceivedEmailSize() == 1); - final SmtpMessage email = (SmtpMessage) server.getReceivedEmail().next(); + assertTrue(server.getReceivedEmailSize() == 2); + final Iterator messages = server.getReceivedEmail(); + final SmtpMessage email = (SmtpMessage) messages.next(); assertEquals("to@example.com", email.getHeaderValue("To")); assertEquals("cc@example.com", email.getHeaderValue("Cc")); @@ -167,6 +171,13 @@ assertTrue(body.contains("Error with exception")); assertTrue(body.contains("RuntimeException")); assertTrue(body.contains("Exception message")); + assertFalse(body.contains("Error message #2")); + + final SmtpMessage email2 = (SmtpMessage) messages.next(); + final String body2 = email2.getBody(); + assertFalse(body2.contains("Debug message #4")); + assertFalse(body2.contains("Error with exception")); + assertTrue(body2.contains("Error message #2")); } } Index: core/src/main/java/org/apache/logging/log4j/core/net/SMTPManager.java =================================================================== --- core/src/main/java/org/apache/logging/log4j/core/net/SMTPManager.java (revision 1513588) +++ core/src/main/java/org/apache/logging/log4j/core/net/SMTPManager.java (working copy) @@ -136,9 +136,6 @@ } try { final LogEvent[] priorEvents = buffer.removeAll(); - if (priorEvents == null || priorEvents.length == 0) { - return; // nothing to do, another thread already took all events - } final byte[] rawBytes = formatContentToBytes(priorEvents, appendEvent, layout); final String contentType = layout.getContentType();