module WASH.Mail.HeaderField where import WASH.Utility.RFC2047 -- newtype Header = Header (String, String) newtype KV = KV (String, String) newtype MediaType = MediaType (String, String) -- instance Show Header where show (Header (key, value)) = if null value then "" else key ++ ':' : ' ' : encodeValue value ++ "\r\n" instance Show KV where show (KV (key, value)) = key ++ '=' : value instance Show MediaType where show (MediaType (ty, subty)) = ty ++ '/' : subty -- mimeHeader = Header ("MIME-Version", "1.0") identHeader = Header ("X-Mailer", "WASH/Mail 0.1") makeContentType mtype subtype parameters = Header ("Content-Type", mtype ++ "/" ++ subtype ++ p parameters) where p = concat . map p1 p1 parameter = ';' : show parameter makeContentTransferEncoding enc = Header ("Content-Transfer-Encoding", enc) makeContentDisposition name = Header ("Content-Disposition", name) makeX what recipients = Header (what, l recipients) where l [] = [] l [xs] = xs l (xs:xss) = xs ++ ", " ++ l xss makeTO = makeX "To" makeCC = makeX "Cc" makeBCC = makeX "Bcc" makeSubject s = makeX "Subject" [s]