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 1432922)
+++ core/src/main/java/org/apache/logging/log4j/core/net/SMTPManager.java	(working copy)
@@ -67,7 +67,9 @@
     }
 
     public void add(final LogEvent event) {
-        buffer.add(event);
+    	synchronized(buffer) {
+            buffer.add(event);
+    	}
     }
 
     public static SMTPManager getSMTPManager(final String to, final String cc, final String bcc,
@@ -129,7 +131,7 @@
             connect();
         }
         try {
-            final byte[] rawBytes = formatContentToBytes(buffer, layout);
+            final byte[] rawBytes = formatContentToBytes(layout);
 
             final String contentType = layout.getContentType();
             final String encoding = getEncoding(rawBytes, contentType);
@@ -151,16 +153,16 @@
         }
     }
 
-    protected byte[] formatContentToBytes(final CyclicBuffer<LogEvent> cb, final Layout<?> layout) throws IOException {
+    protected byte[] formatContentToBytes(final Layout<?> layout) throws IOException {
         final ByteArrayOutputStream raw = new ByteArrayOutputStream();
-        writeContent(cb, layout, raw);
+        writeContent(layout, raw);
         return raw.toByteArray();
     }
 
-    private void writeContent(final CyclicBuffer<LogEvent> cb, final Layout<?> layout, final ByteArrayOutputStream out)
+    private void writeContent(final Layout<?> layout, final ByteArrayOutputStream out)
         throws IOException {
         writeHeader(layout, out);
-        writeBuffer(cb, layout, out);
+        writeBuffer(layout, out);
         writeFooter(layout, out);
     }
 
@@ -171,8 +173,11 @@
         }
     }
 
-    protected void writeBuffer(final CyclicBuffer<LogEvent> cb, final Layout<?> layout, final OutputStream out) throws IOException {
-        final LogEvent[] events = cb.removeAll();
+    protected void writeBuffer(final Layout<?> layout, final OutputStream out) throws IOException {
+        final LogEvent[] events;
+        synchronized(buffer) {
+            events = buffer.removeAll();
+        }
         for (final LogEvent event : events) {
             final byte[] bytes = layout.toByteArray(event);
             out.write(bytes);
