From 56b4aef769386e9fbe3b074698451e8b74489d61 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ra=C3=BAl=20Benencia?= Date: Sun, 1 Sep 2013 21:10:33 -0300 Subject: Email mode working for almost all kind of test-emails --- Email.hs | 20 ++++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) (limited to 'Email.hs') diff --git a/Email.hs b/Email.hs index c1c524f..4d310c4 100644 --- a/Email.hs +++ b/Email.hs @@ -7,7 +7,7 @@ -} module Email where -import Codec.MIME.Type(MIMEValue(..), MIMEContent(..)) +import Codec.MIME.Type(MIMEValue(..), MIMEContent(..), showMIMEType, Type(..), MIMEType(..)) import Data.Char(toLower) import Data.List(find) @@ -15,7 +15,23 @@ getBody :: MIMEValue -> String getBody msg = case mime_val_content msg of Single c -> c - _ -> "Buggity Buggity Buggity!" + Multi mvs -> case firstTextPart mvs of + Just mv -> unwrapContent . mime_val_content $ mv + Nothing -> "Buggity Buggity Buggity!" + where + unwrapContent (Single c) = c + +-- hackish function for showing the email. In he future the logic of this +-- function should be improved. +firstTextPart [] = Nothing +firstTextPart (mv:mvs) = case mime_val_content mv of + Single c -> if isText mv then Just mv else firstTextPart mvs + Multi mvs' -> firstTextPart mvs' + + where + isText = \mv -> case (mimeType $ mime_val_type mv) of + Text text -> True + _ -> False getHeaders :: MIMEValue -> [(String,String)] getHeaders = mime_val_headers -- cgit v1.2.3