diff --git a/CHANGELOG b/CHANGELOG
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -1,3 +1,7 @@
+0.4.1 -> 0.4.2
+--------------
+
+ - Add sendMimeMail' to send mime mails with in-memory attachments
 
 0.4 -> 0.4.1
 ------------
diff --git a/HaskellNet.cabal b/HaskellNet.cabal
--- a/HaskellNet.cabal
+++ b/HaskellNet.cabal
@@ -4,10 +4,11 @@
                 SMTP, and IMAP protocols.  NOTE: this package will be
                 split into smaller, protocol-specific packages in the
                 future.
-Version:        0.4.1
+Version:        0.4.2
 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
 Category:       Network
@@ -55,5 +56,5 @@
     cryptohash,
     base64-string,
     old-time,
-    mime-mail >= 0.4.0 && < 0.5,
+    mime-mail >= 0.4.7 && < 0.5,
     text
diff --git a/example/imap.hs b/example/imap.hs
--- a/example/imap.hs
+++ b/example/imap.hs
diff --git a/example/smtp.hs b/example/smtp.hs
--- a/example/smtp.hs
+++ b/example/smtp.hs
@@ -39,9 +39,14 @@
 example4 = doSMTP server $ \conn ->
     sendMimeMail to from subject plainBody htmlBody [] conn
 
--- | With attachments (modify the `attachments` binding)
+-- | With file attachments (modify the `attachments` binding)
 example5 = doSMTP server $ \conn ->
     sendMimeMail to from subject plainBody htmlBody attachments conn
+
+-- | With ByteString attachments
+bsContent = B.pack [43,43,43,43]
+example5_2 = doSMTP server $ \conn ->
+    sendMimeMail' to from subject plainBody htmlBody [("application/zip", "filename.zip", bsContent)] conn
 
 -- | With authentication
 example6 = doSMTP server $ \conn -> do
diff --git a/src/Network/HaskellNet/IMAP.hs b/src/Network/HaskellNet/IMAP.hs
--- a/src/Network/HaskellNet/IMAP.hs
+++ b/src/Network/HaskellNet/IMAP.hs
@@ -86,7 +86,7 @@
               showQuery (NOTs qry)      = "NOT " ++ show qry
               showQuery OLDs            = "OLD"
               showQuery (ONs t)         = "ON " ++ dateToStringIMAP t
-              showQuery (ORs q1 q2)     = "OR " ++ show q1 ++ " " ++ show q2 
+              showQuery (ORs q1 q2)     = "OR " ++ show q1 ++ " " ++ show q2
               showQuery (SENTBEFOREs t) = "SENTBEFORE " ++ dateToStringIMAP t
               showQuery (SENTONs t)     = "SENTON " ++ dateToStringIMAP t
               showQuery (SENTSINCEs t)  = "SENTSINCE " ++ dateToStringIMAP t
@@ -168,7 +168,7 @@
                                           return (l' : ls)
                      | isTagged l -> (l:) <$> getLs
                      | otherwise -> return [l]
-          getLiteral l len = 
+          getLiteral l len =
               do lit <- bsGet s len
                  l2 <- strip <$> bsGetLine s
                  let l' = BS.concat [l, crlfStr, lit, l2]
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
@@ -56,7 +56,7 @@
       -- * Operation to a Connection
     , sendCommand
     , closeSMTP
-      -- * Other Useful Operations 
+      -- * Other Useful Operations
     , authenticate
     , sendMail
     , doSMTPPort
@@ -64,6 +64,8 @@
     , doSMTPStream
     , sendPlainTextMail
     , sendMimeMail
+    , sendMimeMail'
+    , sendMimeMail2
     )
     where
 
@@ -75,7 +77,7 @@
 
 import Control.Applicative ((<$>))
 import Control.Exception
-import Control.Monad (unless)
+import Control.Monad (unless, when)
 
 import Data.Char (isDigit)
 
@@ -308,7 +310,7 @@
         myMail = simpleMail' (address to) (address from) (T.pack subject) body
         address = Address Nothing . T.pack
 
--- | Send a mime mail.
+-- | Send a mime mail. The attachments are included with the file path.
 sendMimeMail :: String               -- ^ receiver
              -> String               -- ^ sender
              -> String               -- ^ subject
@@ -324,6 +326,30 @@
   sendMail from [to] (lazyToStrict renderedMail) con
   where
     address = Address Nothing . T.pack
+
+-- | Send a mime mail. The attachments are included with in-memory 'ByteString'.
+sendMimeMail' :: String                         -- ^ receiver
+              -> String                         -- ^ sender
+              -> String                         -- ^ subject
+              -> LT.Text                        -- ^ plain text body
+              -> LT.Text                        -- ^ html body
+              -> [(T.Text, T.Text, B.ByteString)] -- ^ attachments: [(content_type, file_name, content)]
+              -> SMTPConnection
+              -> IO ()
+sendMimeMail' to from subject plainBody htmlBody attachments con = do
+  let myMail = simpleMailInMemory (address to) (address from) (T.pack subject)
+                                  plainBody htmlBody attachments
+  sendMimeMail2 myMail con
+  where
+    address = Address Nothing . T.pack
+
+sendMimeMail2 :: Mail -> SMTPConnection -> IO ()
+sendMimeMail2 mail con = do
+    let (Address _ from) = mailFrom mail
+        tos = map (T.unpack . addressEmail) $ mailTo mail
+    when (null tos) $ fail "no receiver specified."
+    renderedMail <- renderMail' mail
+    sendMail (T.unpack from) tos (lazyToStrict renderedMail) con
 
 -- haskellNet uses strict bytestrings
 -- TODO: look at making haskellnet lazy
