我正在學習一個名爲parsec的haskell解析庫,爲此我需要解析一封電子郵件。我一直在研究規格,比較不同客戶的不同消息,閱讀一些rfc等。解析MIME電子郵件,outlook問題和差異
對於本練習,我需要的是提取「From:」標題和實際的純文本正文。 現在,所有的客戶似乎都會產生理智或至少沒有偏離規格的信息。唯一的區別是前景(我不爲某些原因感到驚訝)。
所以standad方式,根據MYU閱讀是有邊界序列說:
Content-Type: multipart/alternative; boundary=047d7b2e4e3cdc627304eb094bfe
,然後所有的多體的部分由這個邊界序列界定,對不對? 請糾正我,如果我錯了。我希望我的解析器能夠與所有可能的客戶端一起工作。
所以常用的模式是
--boundary
headers
part
--boundary
headers
part
...
現在,看着前景產生的消息,我看到不同的畫面。 它使用某種分界線,我不明白它是否是標準的? 這是展望變種
Content-Type: multipart/related;
type="multipart/alternative";
boundary="----_=_NextPart_001_01CEE199.851D3871"
然後身體被分隔這樣
------_=_NextPart_001_01CEE199.851D3871
Content-Type: multipart/alternative;
boundary="----_=_NextPart_002_01CEE199.851D3871"
----_=_NextPart_002_01CEE199.851D3871
headers
body part
----_=_NextPart_002_01CEE199.851D3871
headers
body part
------_=_NextPart_001_01CEE199.851D3871
所以它與序列001的外部邊界,然後內邊界與序列002 那麼這是什麼?這是某種微軟自己的默認規格,還是在我錯過的rfc中?這是更復雜的解析。