diff --git a/src/main/java/hudson/plugins/emailext/AttachmentUtils.java b/src/main/java/hudson/plugins/emailext/AttachmentUtils.java
index e6dc73d..fa513c1 100644
--- a/src/main/java/hudson/plugins/emailext/AttachmentUtils.java
+++ b/src/main/java/hudson/plugins/emailext/AttachmentUtils.java
@@ -8,6 +8,7 @@ import hudson.model.BuildListener;
 import hudson.model.AbstractBuild;
 
 import hudson.plugins.emailext.plugins.ContentBuilder;
+import hudson.plugins.emailext.plugins.ZipDataSource;
 
 import org.apache.commons.lang.StringUtils;
 
@@ -134,7 +135,7 @@ public class AttachmentUtils implements Serializable {
     /**
      * Attaches the build log to the multipart item.
      */
-    public static void attachBuildLog(Multipart multipart, AbstractBuild<?, ?> build, BuildListener listener) {
+    public static void attachBuildLog(Multipart multipart, AbstractBuild<?, ?> build, BuildListener listener, boolean compress) {
         try {
             File logFile = build.getLogFile();
             long maxAttachmentSize =
@@ -146,13 +147,22 @@ public class AttachmentUtils implements Serializable {
                 return;
             }
 
-            FileDataSource fileSource = new FileDataSource(logFile);
+            DataSource fileSource;
             MimeBodyPart attachment = new MimeBodyPart();
+            if(compress) {
+				listener.getLogger().println("Request made to compress build log" );
+				fileSource = new ZipDataSource(logFile);
+				attachment.setFileName("build.zip");
+            } else {
+				fileSource = new FileDataSource(logFile);
+				attachment.setFileName("build.log");
+            }
             attachment.setDataHandler(new DataHandler(fileSource));
-            attachment.setFileName("build.log");
             multipart.addBodyPart(attachment);
         } catch (MessagingException e) {
-            listener.error("Error attaching build log to message: " + e.getMessage());
-        }
+			listener.error("Error attaching build log to message: " + e.getMessage());
+        } catch (IOException e) {
+			listener.error("Error attaching build log to message: " + e.getMessage());
+		}
     }
 }
diff --git a/src/main/java/hudson/plugins/emailext/EmailType.java b/src/main/java/hudson/plugins/emailext/EmailType.java
index 73c0fbf..a37f458 100755
--- a/src/main/java/hudson/plugins/emailext/EmailType.java
+++ b/src/main/java/hudson/plugins/emailext/EmailType.java
@@ -56,6 +56,11 @@ public class EmailType {
     private boolean attachBuildLog;
 
     /**
+     * True to compress the build log before attaching it to the email
+     */
+    private boolean compressBuildLog;
+
+    /**
      * List of email addresses to put into the Reply-To header
      */
     private String replyTo;
@@ -70,6 +75,7 @@ public class EmailType {
         sendToRequester = false;
         attachmentsPattern = "";
         attachBuildLog = false;
+        compressBuildLog = false;
         replyTo = "";
     }
 
@@ -155,10 +161,18 @@ public class EmailType {
         return attachBuildLog;
     }
 
+    public boolean getCompressBuildLog() {
+		return compressBuildLog;
+    }
+
     public void setAttachBuildLog(boolean attachBuildLog) {
         this.attachBuildLog = attachBuildLog;
     }
 
+    public void setCompressBuildLog(boolean compressBuildLog) {
+		this.compressBuildLog = compressBuildLog;
+    }
+
     public Object readResolve() {
         if(this.recipientList != null) {
             // get rid of PROJECT_DEFAULT_RECIPIENTS stuff
diff --git a/src/main/java/hudson/plugins/emailext/ExtendedEmailPublisher.java b/src/main/java/hudson/plugins/emailext/ExtendedEmailPublisher.java
index 4c4ea51..527c6fe 100755
--- a/src/main/java/hudson/plugins/emailext/ExtendedEmailPublisher.java
+++ b/src/main/java/hudson/plugins/emailext/ExtendedEmailPublisher.java
@@ -168,6 +168,11 @@ public class ExtendedEmailPublisher extends Notifier implements MatrixAggregatab
     public boolean attachBuildLog;
 
     /**
+     * True to compress the log from the build before attaching to the email
+     */
+    public boolean compressBuildLog;
+
+    /**
      * Reply-To value for the e-mail
      */
     public String replyTo;
@@ -487,7 +492,7 @@ public class ExtendedEmailPublisher extends Notifier implements MatrixAggregatab
 
         if(attachBuildLog || type.getAttachBuildLog()) {
             debug(listener.getLogger(), "Request made to attach build log");
-            AttachmentUtils.attachBuildLog(multipart, build, listener);
+            AttachmentUtils.attachBuildLog(multipart, build, listener, compressBuildLog || type.getCompressBuildLog());
         }
 
         msg.setContent(multipart);
diff --git a/src/main/java/hudson/plugins/emailext/ExtendedEmailPublisherDescriptor.java b/src/main/java/hudson/plugins/emailext/ExtendedEmailPublisherDescriptor.java
index 1b81a36..ffdd800 100755
--- a/src/main/java/hudson/plugins/emailext/ExtendedEmailPublisherDescriptor.java
+++ b/src/main/java/hudson/plugins/emailext/ExtendedEmailPublisherDescriptor.java
@@ -290,6 +290,7 @@ public class ExtendedEmailPublisherDescriptor extends BuildStepDescriptor<Publis
         m.attachmentsPattern = formData.getString("project_attachments");
         m.presendScript = formData.getString("project_presend_script");
         m.attachBuildLog = "true".equalsIgnoreCase(formData.optString("project_attach_buildlog"));
+        m.compressBuildLog = "true".equalsIgnoreCase(formData.optString("project_compress_buildlog"));
         m.replyTo = formData.getString("project_replyto");
         m.configuredTriggers = new ArrayList<EmailTrigger>();
 
@@ -319,6 +320,7 @@ public class ExtendedEmailPublisherDescriptor extends BuildStepDescriptor<Publis
         m.setIncludeCulprits(formData.optBoolean(prefix + "includeCulprits"));
         m.setAttachmentsPattern(formData.getString(prefix + "attachmentsPattern"));
         m.setAttachBuildLog(formData.optBoolean(prefix + "attachBuildLog"));
+        m.setCompressBuildLog(formData.optBoolean(prefix + "compressBuildLog"));
         m.setReplyTo(formData.getString(prefix + "replyTo"));
         return m;
     }
diff --git a/src/main/java/hudson/plugins/emailext/plugins/ZipDataSource.java b/src/main/java/hudson/plugins/emailext/plugins/ZipDataSource.java
new file mode 100644
index 0000000..86543ca
--- /dev/null
+++ b/src/main/java/hudson/plugins/emailext/plugins/ZipDataSource.java
@@ -0,0 +1,60 @@
+package hudson.plugins.emailext.plugins;
+
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.OutputStream;
+import java.util.zip.ZipEntry;
+import java.util.zip.ZipException;
+import java.util.zip.ZipOutputStream;
+
+import javax.activation.DataSource;
+
+public class ZipDataSource implements DataSource {
+
+	private final static String MIME_TYPE = "application/zip";
+	private final static String FILE_EXTENSION = ".zip";
+	private final static int BUFFER_SIZE = 1024;
+
+	private final String name;
+	private byte[] contents;
+
+	public ZipDataSource(File f) throws IOException {
+		name = f.getName() + FILE_EXTENSION;
+
+		InputStream fin = new FileInputStream(f);
+		ByteArrayOutputStream baos = new ByteArrayOutputStream();
+		ZipOutputStream zos = new ZipOutputStream(baos);
+		zos.putNextEntry(new ZipEntry(f.getName()));
+
+		int size;
+		byte[] buffer = new byte[BUFFER_SIZE];
+		while ((size = fin.read(buffer, 0, buffer.length)) > 0) {
+			zos.write(buffer, 0, size);
+		}
+		zos.closeEntry();
+		zos.close();
+		fin.close();
+
+		contents = baos.toByteArray();
+	}
+
+	public String getContentType() {
+		return MIME_TYPE;
+	}
+
+	public InputStream getInputStream() throws IOException {
+		return new ByteArrayInputStream(contents);
+	}
+
+	public String getName() {
+		return name;
+	}
+
+	public OutputStream getOutputStream() throws IOException {
+		throw new ZipException("This zip file " + name + " is not modifiable");
+	}
+}
diff --git a/src/main/resources/hudson/plugins/emailext/ExtendedEmailPublisher/config.groovy b/src/main/resources/hudson/plugins/emailext/ExtendedEmailPublisher/config.groovy
index b60232d..312c35e 100644
--- a/src/main/resources/hudson/plugins/emailext/ExtendedEmailPublisher/config.groovy
+++ b/src/main/resources/hudson/plugins/emailext/ExtendedEmailPublisher/config.groovy
@@ -65,9 +65,12 @@ f.entry(title: _("Attachments"), help: "/plugin/email-ext/help/projectConfig/att
     input(name: "project_attachments", value: "", class: "setting-input", type: "text") 
   }
 }
-f.entry(title: _("Attach Build Log"), help: "/plugin/email-ext/help/projectConfig/attachBuildLog.html") {
-  f.checkbox(name: "project_attach_buildlog", checked: instance?.attachBuildLog) 
+f.optionalBlock(title: _("Attach Build Log"), help: "/plugin/email-ext/help/projectConfig/attachBuildLog.html", checked: instance?.attachBuildLog) {
+  f.entry(title: _("Compress Build Log before sending"), help: "/plugin/email-ext/help/projectConfig/compressBuildLog.html") {
+  f.checkbox(name: "project_compress_buildlog", checked: instance?.compressBuildLog)
 }
+}
+
 def contentTokenText = hudson.plugins.emailext.EmailExtHelp.getContentTokenHelpText()
 tr() {
   td() 
@@ -156,7 +159,7 @@ f.advanced() {
           tr(id: "${secId}after-last-configured-row") {
             td() 
             td(colspan: "6") {
-              span(style: "font-weight:bold", _("Add a Trigger:}")) 
+              span(style: "font-weight:bold", _("Add a Trigger:"))
               span(style: "font-weight:bold") 
               select(id: "${secId}non-configured-options", onchange: "selectTrigger(this,'${secId}')") {
                 option(value: "select", "select") 
diff --git a/src/main/resources/hudson/plugins/emailext/tags/mailtype.jelly b/src/main/resources/hudson/plugins/emailext/tags/mailtype.jelly
index 31852de..44fa821 100644
--- a/src/main/resources/hudson/plugins/emailext/tags/mailtype.jelly
+++ b/src/main/resources/hudson/plugins/emailext/tags/mailtype.jelly
@@ -150,10 +150,15 @@
 						value="${mailTypeObj.attachmentsPattern}" />
 				</f:entry>
 				<f:entry title="${%Attach Build Log}"
-	               help="/plugin/email-ext/help/projectConfig/attachBuildLog.html">
+				help="/plugin/email-ext/help/projectConfig/attachBuildLog.html">
 	        		<f:checkbox name="mailer_${mailType}_attachBuildLog" 
 	        					checked="${mailTypeObj.attachBuildLog}" />
 	      		</f:entry>
+				<f:entry title="${%Compress Build Log}"
+				help="/plugin/email-ext/help/projectConfig/compressBuildLog.html">
+					<f:checkbox name="mailer_${mailType}_compressBuildLog"
+						checked="${mailTypeObj.compressBuildLog}" />
+				</f:entry>
 			</table>
 		</td>
 	</tr>
diff --git a/src/main/webapp/help/projectConfig/compressBuildLog.html b/src/main/webapp/help/projectConfig/compressBuildLog.html
new file mode 100644
index 0000000..3116e49
--- /dev/null
+++ b/src/main/webapp/help/projectConfig/compressBuildLog.html
@@ -0,0 +1,3 @@
+<div>
+	Check this to enable compressing the log from the build before attaching to the email.
+</div>
