郵件內容分析

來源:互聯網
上載者:User
   鬱悶了一個多星期的問題終於有眉目了。
    問題本身其實不是很難,要從outlook和outlook express郵箱裡面將所有的郵件提取出來,並且能夠得到主題,寄件者,收件者,本文,附件等內容。
    郵件用戶端會把伺服器端的郵件下載下來,並儲存到本地的某個目錄中,outlook是儲存成pst格式的,outlook express是儲存成dbx格式的,這兩種格式都是一個檔案存放n個郵件的方式。
    首先能想到的方法就是直接去解析這些格式,我很順利的從網上下載到了格式解析的原始碼,可以將pst格式轉化為msg格式,可以將dbx檔案解析成eml檔案,後面的兩種檔案格式都是存放一個郵件的,並且可以用相應的郵件可戶端開啟。
    現在只要解析這2種格式就可以了,眼看順利就在眼前,誰知道這時候問題出來了,msg格式還好,是用unicode編碼的,以明文形式儲存。而eml是採用mime標準的,英文一般是用base64編碼格式的,這個從網上順利找到原始碼解開。但是中文的時候就麻煩了,一般預設的編碼是採用gb2312字元集,quoted-printable編碼格式。由於中文郵件中一般都有英文字母,所以裡面一般是採用base64和quoted-printable混編的模式,而檔案是用超文字格式設定存放的,如果自己解析的話估計要花不少時間,而且考慮到有可能採用繁體和unicode字元集,不同的編碼格式,估計是個漫長的過程。
    把直接解析編碼放在一邊,考慮mime標準。在網上一搜,果然不少mime的源碼,那過來一試,也還是只支援英文的。不過終於發現有gmime2標準,是最新的郵件編碼通訊協定,提供原始碼,迫不及待的下來以後,希望又破滅了。只有for debian的版本,還要n個庫支援,改成能在windows下能夠編譯通過的版本也不是一件容易的事情啊,而且這個代碼的作者還寫道,如果誰能在windows下編譯通過的話,記得告訴他一下。
    正在抉擇是自己解析格式好還是改編gmime2好的時候,突然發現自己有點傻。既然outlook和outlook express能夠讀的話,按照微軟的風格,應該會有API提供的。就像WORD一樣,我前面的努力就像是要把WORD格式分析的清清楚楚,然後編碼實現,而放著現成的介面不用。
    下面的工作就簡單了,支援郵件的dll是MAPI.dll,裡麵包羅永珍,從接受,發送,解析甚至構建郵件伺服器都有。下載MSDN的常式後,outlook express可以順利解決,根本連dbx格式都不用分析,直接有介面按順序找郵件,得到郵件內容。outlook方面常式不支援,老是說我的郵件預設配置有問題,不過既然走到這一步了,方法就多的是了,我採用的是CreateDispatch方式,跟控制office一樣。根據介面描述很方便的可以解析每一封郵件。
    問題從技術上來說基本上解決了,但是還要有一些局限性,比如某個單獨的.eml檔案,或者是沒有加到用戶端的dbx或者pst檔案都不能解析。不過大部分能做就可以了。這些問題留到以後再解決吧。還要foxmail,估計也要研究個半天了,先不考慮這些吧。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.