一、JavaMail API 簡介
JavaMail API是Sun公司為方便Java開發人員在應用程式中實現郵件發送和接收功能而提供的一套標準開發包,它支援一些常用的郵件協議,如:SMTP、POP3、IMAP和MIME等。開發人員使用JavaMail API編寫郵件處理軟體時,無須考慮郵件協議底層的實現細節,只要調用JavaMail開發包中相應的API類就可以了。JavaMail API封裝在一個名mail.jar的檔案中,它是開發JavaMail應用程式時所必須使用的核心jar包。
二、配置 JavaMail 開發環境
- 到Oracle官網下載mail.jar開發包,目前最新版本是1.4.5。下載成功後,會得到一個javamail1_4_5.zip的檔案,然後解壓。
- 解壓後的目錄結構如所示:
-
- mail.jar:就是開發javamail程式所必須要用到的核心開發包。
- demo子目錄:樣本程式。
- lib子目錄:該目錄下包含5個獨立的郵件開發包:smtp.jar、pop3.jar、imap.jar和mailapi.jar,這5個jar檔案是對mail.jar檔案的分類封裝。其中mailapi.jar封裝了建立郵件內容和面向普通開發人員調用郵件發送和接收的API類,其它三個jar檔案則是封裝了它們名稱相對應協議的服務實現程式。mailapi.jar與其它三個jar檔案的關係,猶如JDBC
API與各個資料庫所實現jdbc驅動程式之間的關係一樣。在編譯Java郵件程式時,只需要mailapi.jar檔案即可,但是,在運行時必須要有相應郵件協議的底層服務實現程式。如果應用程式中只需要使用到郵件發送功能,則可以只安裝smtp.jar和mailapi.jar這兩個檔案,如果應用程式只需要使用郵件的接收功能,則可以只安裝pop3.jar或imap.jar和mailapi.jar這兩個jar檔案,而不用安裝整個mail.jar檔案。
- 安裝javamail
- 將mail.jar檔案添加到系統內容變數CLASSPATH中,如所示:
- 將mail.jar檔案拷貝到%JAVA_HOME%\jre\lib\ext目錄下
以上兩種方式選其中任意一種方式即可完成javamail的安裝。三、JavaMail API的分類及體繫結構
JavaMail API按其功能可以劃分為以下三大類:
- 建立和解析郵件內容的API
- 發送郵件的API
- 內送郵件的API
以上三種類型的功能由多個API類組成,但每個功能所設及到的核心API並不多,其它API類都是這些核心API的輔助類,瞭解這些核心API的功能及作用,掌握它們之間的工作關係和調用流程,就很容易編寫出javamail程式了,對於核心API類所用到輔助類,可以在使用這些核心API的過程中順藤摸瓜,邊查文檔邊瞭解這些輔助類的用法即可。具我瞭解,JavaMail中的核心AIP類包含Message、Session、Transport、Store4個類,它們之間的工作關係,如所示:
核心API介紹:
javax.mail.Message 類是建立和解析郵件的核心API,它的執行個體對象代表一封電子郵件。用戶端程式發送郵件時,首先使用建立郵件的API,將要建立郵件的資料封裝到Message對象中,然後把這個對象傳遞給郵件發送API發送出去。用戶端程式內送郵件時,郵件接收API把接收到的郵件資料封裝在Message類的執行個體對象中,用戶端程式再使用郵件解析API,從這個對象中解析出接收到的郵件資料。
javax.mail.Session 類用於定義整個應用程式所需的環境資訊,以及收集用戶端與郵件伺服器建立網路連接的會話資訊,如郵件伺服器的主機名稱、連接埠號碼、採用的郵件發送和接收協議等。Session對象根據這些會話資訊構建郵件收發的Store和Transport對象,以及為用戶端建立Message對象提供資訊支援。
javax.mail.Transport 類是發送郵件的核心API類,它的執行個體對象,代表實現了某個郵件發送協議的郵件發送對象,例如SMTP 協議。用戶端程式建立好Message對象後,只需要使用郵件發送API得到 Transport 對象,然後把 Message 對象傳遞給 Transport 對象,並調用它的發送方法,就可以把郵件發送給指定的SMTP伺服器。
javax.mail.Store 類是內送郵件的核心API類,它的執行個體對象代表實現某個郵件接收協議的郵件接收對象,例如POP3和IMAP協議。用戶端程式內送郵件時,只需要使用郵件接收API得到Store對象,然後調用Store對象的接收方法,就可以從指定的 POP3伺服器中獲得郵件資料,並把這些郵件資料封裝到表示郵件的Message對象中。四、JAF 簡介 JAF(JavaBeans Activation Framework,JavaBeans 啟用架構)是一個專用的資料處理架構,它用於封裝資料,並為應用程式提供訪問和操作資料的介面。JavaMail API可以利用JAF從某種資料來源中讀取資料和獲知資料的MIME類型,並用這些資料產生MIME訊息中的訊息體和訊息類型。 JAF的主要作用在於讓Java應用程式知道如何對一個資料來源進行查看、編輯和列印等操作。大家知道,在MS Word程式中可以開啟一篇Word文檔中嵌套的Visio圖片,JAF就是讓Java程式能夠完成類似的技術應用,讓應用程式知道資料來源支援哪些操作,每個操作分別調用哪個處理模組。對於通過JAF 封裝的資料,應用程式通過JAF提供的介面可以完成如下功能:
- 訪問資料來源中的資料
- 獲知資料來源的資料類型
- 獲知可對資料進行的各種操作
- 使用者對資料執行某種操作時,自動建立執行該操作的軟體組件的執行個體對象
例如,如果使用JAF處理一個圖片檔案,那麼應用程式通過JAF提供的介面就可以得到對圖片檔案進行操作的輸入輸出資料流,圖片檔案的MIME類型,JAF為圖片檔案提供的操作方法(如查看、編輯或列印圖片等),應用程式調用這些操作時,JAF就會調用相應的處理模組對資料進行處理。 在Oracle官網可以下載到JAF的jar包,下載後得到的是一個名為activation.jar檔案,現在最新版本是1.1。
注意:JDK1.6整合了JAF架構,如果使用的是JDK1.6以上版本,則可以不用單獨下載JAF架構。