diff --git a/CHANGELOG b/CHANGELOG
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -1,3 +1,8 @@
+0.5.1 (2016-05-05)
+------------------
+
+ - SMTP: Strip carriage returns from the on lines before sending
+
 0.5 (2015-11-5)
 ---------------
 
diff --git a/HaskellNet.cabal b/HaskellNet.cabal
--- a/HaskellNet.cabal
+++ b/HaskellNet.cabal
@@ -1,20 +1,20 @@
 Name:           HaskellNet
 Synopsis:       Client support for POP3, SMTP, and IMAP
-Description:	This package provides client support for the POP3,
+Description:    This package provides client support for the POP3,
                 SMTP, and IMAP protocols.  NOTE: this package will be
                 split into smaller, protocol-specific packages in the
                 future.
-Version:        0.5
+Version:        0.5.1
 Copyright:      (c) 2006 Jun Mukai
 Author:         Jun Mukai
-Maintainer:	Jonathan Daugherty <cygnus@foobox.com>,
+Maintainer:     Jonathan Daugherty <cygnus@foobox.com>,
                 Leza Morais Lutonda <lemol-c@outlook.com>
 License:        BSD3
-License-file:	LICENSE
+License-file:   LICENSE
 Category:       Network
 Homepage:       https://github.com/jtdaugherty/HaskellNet
 Cabal-version:  >=1.6
-Build-type:	Simple
+Build-type:     Simple
 
 Extra-Source-Files:
   CHANGELOG
diff --git a/src/Network/HaskellNet/SMTP.hs b/src/Network/HaskellNet/SMTP.hs
--- a/src/Network/HaskellNet/SMTP.hs
+++ b/src/Network/HaskellNet/SMTP.hs
@@ -192,9 +192,12 @@
     do bsPutCrLf conn $ BS.pack "DATA"
        (code, _) <- parseResponse conn
        unless (code == 354) $ fail "this server cannot accept any data."
-       mapM_ sendLine $ BS.lines dat ++ [BS.pack "."]
+       mapM_ (sendLine . stripCR) $ BS.lines dat ++ [BS.pack "."]
        parseResponse conn
     where sendLine = bsPutCrLf conn
+          stripCR bs = case BS.unsnoc bs of
+                         Just (line, '\r') -> line
+                         _                 -> bs
 sendCommand (SMTPC conn _) (AUTH LOGIN username password) =
     do bsPutCrLf conn command
        (_, _) <- parseResponse conn
