diff --git a/src/Appender/SmtpPickupDirAppender.cs b/src/Appender/SmtpPickupDirAppender.cs
index 9801d31..6d8efa6 100644
--- a/src/Appender/SmtpPickupDirAppender.cs
+++ b/src/Appender/SmtpPickupDirAppender.cs
@@ -62,8 +62,8 @@
 		/// Default constructor
 		/// </para>
 		/// </remarks>
-		public SmtpPickupDirAppender()
-		{
+		public SmtpPickupDirAppender()
+		{
 			m_fileExtension = string.Empty; // Default to empty string, not null
 		}
 
@@ -137,33 +137,37 @@
 			set { m_pickupDir = value; }
 		}
 
- 		/// <summary>
-		/// Gets or sets the file extension for the generated files
-		/// </summary>
-		/// <value>
-		/// The file extension for the generated files
-		/// </value>
-		/// <remarks>
-		/// <para>
-		/// The file extension for the generated files
-		/// </para>
-		/// </remarks>
-		public string FileExtension
-		{
-			get { return m_fileExtension; }
-			set
-			{
-				m_fileExtension = value;
-				if (m_fileExtension == null)
-				{
-					m_fileExtension = string.Empty;
-				}
-				// Make sure any non empty extension starts with a dot
-				if (!string.IsNullOrEmpty(m_fileExtension) && !m_fileExtension.StartsWith("."))
-				{
-					m_fileExtension = "." + m_fileExtension;
-				}
-			}
+ 		/// <summary>
+		/// Gets or sets the file extension for the generated files
+		/// </summary>
+		/// <value>
+		/// The file extension for the generated files
+		/// </value>
+		/// <remarks>
+		/// <para>
+		/// The file extension for the generated files
+		/// </para>
+		/// </remarks>
+		public string FileExtension
+		{
+			get { return m_fileExtension; }
+			set
+			{
+				m_fileExtension = value;
+				if (m_fileExtension == null)
+				{
+					m_fileExtension = string.Empty;
+				}
+				// Make sure any non empty extension starts with a dot
+#if NET_2_0 || MONO_2_0
+				if (!string.IsNullOrEmpty(m_fileExtension) && !m_fileExtension.StartsWith("."))
+#else
+				if (m_fileExtension != null && m_fileExtension.Length > 0 && !m_fileExtension.StartsWith("."))
+#endif
+				{
+					m_fileExtension = "." + m_fileExtension;
+				}
+			}
 		}
 
 		/// <summary>
@@ -225,7 +229,7 @@
 					{
 						writer.WriteLine("To: " + m_to);
 						writer.WriteLine("From: " + m_from);
-						writer.WriteLine("Subject: " + m_subject);
+						writer.WriteLine("Subject: " + m_subject);
 						writer.WriteLine("Date: " + DateTime.UtcNow.ToString("r"));
 						writer.WriteLine("");
 
@@ -336,7 +340,7 @@
 		private string m_to;
 		private string m_from;
 		private string m_subject;
-		private string m_pickupDir;
+		private string m_pickupDir;
 		private string m_fileExtension;
 
 		/// <summary>
