我想解析与此类似的电子邮件
Random Info: ........
From: email@domain.com
Other Info: .......
Subject: ima subject
Some More Info: .....
This is a message.
但我不需要这封电子邮件中的所有信息。只有“发件人”、“主题”和邮件本身。我怎样才能解析这样的消息?更具体地说,我怎样才能跳过不需要的数据?
这是我到目前为止的代码
{-# LANGUAGE OverloadedStrings #-}
module MailParser where
import qualified Data.Text as T
import Data.Attoparsec.Text
type From = Address
type Message = T.Text
type Subject = T.Text
type Local = T.Text
type Domain = T.Text
data Address = Address Local Domain
data Mail = Mail From Subject Message
addressParser :: Parser Address
addressParser = do
_ <- string "From: "
local <- takeWhile1 (/= '@')
_ <- char '@'
domain <- takeWhile1 (/= '\n')
return $ Address local domain
subjectParser :: Parser T.Text
subjectParser = do
_ <- string "Subject: "
takeWhile1 (/= '\n')
messageParser :: Parser Message
messageParser = do
_ <- char '\n'
takeText
mailParser :: Parser Mail
mailParser = do
-- skip unwanted info
from <- addressParser
-- skip unwanted info
subject <- subjectParser
-- skip unwanted info
message <- messageParser
return $ Mail from subject message