{-# LANGUAGE TypeApplications #-} module Data.Email where import Data.Email.Header import Conduit import qualified Data.Conduit.Combinators as C import qualified Data.Conduit.Text as CT import Data.ByteString (ByteString) parseEmail :: (MonadUnliftIO m, MonadThrow m, Monad m) => ConduitM ByteString Header m () parseEmail = catchC (CT.decode CT.utf8) err .| CT.lines .| C.concatMap decode where err e = liftIO (print @CT.TextException e) >> yield ""