天天看點

第七講:解析郵件内容

第七講:解析郵件内容

一、javamail解析郵件内容的流程

第七講:解析郵件内容

二、解析郵件内容

2.1 解析普通郵件内容

如果message.getcontenttype方法傳回的mime類型為"text/*"則表示郵件内容為文本内容,此時直接調用message.getcontent方法把郵件内容儲存了一個string對象中輸出給浏覽器即可。但是現實郵件中會有html格式的郵件内容時,郵件發送程式為了防止有些郵件閱讀軟體不能顯示處理html格式的資料,通常都會用兩類型分别為"text/plain"和"text/html"的mime消息封裝html代碼。是以對于這兩種類型要通過判斷之後方可顯示。

下面使用例子來進行判斷:

當含有"text/plain"和"text/html"中時使用message.getcontenttype傳回的類型為"multipart/alternative"

2.2 解析“multipart/related”類型的郵件

郵件類型為"multipart/related"的郵件正文中包括圖檔,聲音等内嵌資源。ie浏覽器顯示的類型就是"multipart/related",是以可以通過ie浏覽器顯示郵件中的内容隻需要将生成的檔案名稱改為html然後用浏覽器打開即可。ie浏覽器作為郵件資料顯示工具式,不管郵件體中嵌套多少個内嵌資源,程式隻需要向ie浏覽器輸出郵件體中的資料,并告訴浏覽器以"message/rfc822"的形式進行處理就可以了。那麼ie浏覽器就會自動解析并且顯示這種形式的郵件資料。

2.3 使用ie解析正文需要注意的問題

一個ie浏覽器隻能處理一種資料類型,而我們在解析内嵌資源的郵件時,從郵件中解析出來的郵件頭資訊通常是以"text/html"格式向輸出的,而郵件正文是以"message/rfc822"格式向ie浏覽器輸出的。是以要想在浏覽器中顯示符合人們閱讀習慣的郵件資訊,即在同一個浏覽器視窗中即顯示郵件頭資訊又顯示郵件正文,就需要對浏覽器視窗進行分幀,每個幀視窗顯示一種格式的郵件資料。

例如下面的jsp檔案用于連接配接郵件伺服器并且緩存folder對象到會話對象session中,該檔案還定義了兩個證視窗分别用來顯示郵件頭和郵件正文。

2.4 解析郵件附件

在web應用中解析包含附件的郵件時,隻需要從message對象中解析出儲存附件資料的bodypart對象,然後從bodypart對象中得到附件的輸入流、附件的mime類型和附件的檔案名,并且這些資訊輸出給ie浏覽器。浏覽器收到資訊後,會根據資料的mime類型彈出相應的對話框提示使用者下載下傳或打開附件。

下面的檔案是在使用者點選上述的連接配接時就會自動的現在檔案: