diff --git a/Text/ParserCombinators/Parsec/Rfc2822.hs b/Text/ParserCombinators/Parsec/Rfc2822.hs
--- a/Text/ParserCombinators/Parsec/Rfc2822.hs
+++ b/Text/ParserCombinators/Parsec/Rfc2822.hs
@@ -569,16 +569,10 @@
                      b <- option [] (do _ <- crlf; body)
                      return (Message f b)
 
--- |This parser will return a message body as specified by this RFC;
--- that is basically any number of 'text' characters, which may be
--- divided into separate lines by 'crlf'.
+-- |A message body is just an unstructured sequence of characters.
 
 body            :: CharParser a String
-body            = do r1 <- many (try (do line <- many text
-                                         eol <- crlf
-                                         return (line ++ eol)))
-                     r2 <- many text
-                     return (concat r1 ++ r2)
+body            = many anyChar
 
 
 -- * Field definitions (section 3.6)
diff --git a/hsemail.cabal b/hsemail.cabal
--- a/hsemail.cabal
+++ b/hsemail.cabal
@@ -1,5 +1,5 @@
 Name:                   hsemail
-Version:                1.7.6
+Version:                1.7.7
 Copyright:              (c) 2013 Peter Simons
 License:                BSD3
 License-File:           LICENSE
@@ -11,7 +11,7 @@
 Description:            Parsers for the syntax defined in RFC2821 and 2822
 Cabal-Version:          >= 1.8
 Build-Type:             Simple
-Tested-With:            GHC >= 7.0.4 && <= 7.6.2
+Tested-With:            GHC >= 6.12.3 && <= 7.6.3
 
 Extra-Source-Files:     example/message-test.hs
                         example/message-test.input
diff --git a/self-test.hs b/self-test.hs
--- a/self-test.hs
+++ b/self-test.hs
@@ -302,3 +302,7 @@
   describe "Rfc2822.word" $
     it "parses hand-picked inputs correctly" $
       parseTest word "  foobar  " `shouldReturn` "foobar"
+
+  describe "Rfc2822.body" $
+    it "parses 8-bit characters correctly" $
+      parseIdemTest body "abc äöüß def"
