淺談JSP和Java Mail API的相關(guān)知識(shí)
Java Mail API的結(jié)構(gòu)本身證實(shí)了他的研發(fā)者的基本目標(biāo)之一--軟件研發(fā)的工作量應(yīng)該取決于應(yīng)用程式本身的復(fù)雜程度連同研發(fā)者所需要的控制程度。換句話說(shuō),Java Mail API盡可能地保持簡(jiǎn)單。乍看起來(lái),Java Mail API所擁有的類總數(shù)連同類之間的關(guān)系可能讓人誤解為要花費(fèi)漫長(zhǎng)的學(xué)習(xí)時(shí)間。實(shí)際上,一旦正式開始使用,您就會(huì)發(fā)現(xiàn)該API不失為在應(yīng)用程式中加入健壯的郵件/通訊支持的簡(jiǎn)單工具。
建立JavaMail使用環(huán)境,需要哪些軟件
首先,需要安裝JavaMail API?,F(xiàn)在有兩種常用的 JavaMail API 版本:1.2 和 1.1.3。雖然版本 1.2 是最新版,但版本 1.1.3 包含了Java 2 平臺(tái)企業(yè)版(Java 2 Platform, Enterprise Edition,J2EE)的版本 1.2.1,所以仍然有很多人使用他。
JavaMail 1.2 的安裝
要使用 JavaMail 1.2 API,請(qǐng)下載 JavaMail 1.2 實(shí)現(xiàn),解開Javamail-1_2.zip 文檔,并將 mail.jar 文檔添加到 CLASSPATH 中。除了核心類,隨版本 1.2 實(shí)現(xiàn)一起提供的更有 SMTP、IMAP4 和 POP3 供給商。
JavaMail 1.1.3 的安裝
要使用 JavaMail 1.1.3 API,請(qǐng)下載 JavaMail 1.1.3 實(shí)現(xiàn),解開Javamail1_1_3.zip文檔,并將 mail.jar 文檔添加到您的 CLASSPATH 中。除了核心類,隨版本 1.1.3 實(shí)現(xiàn)一起提供的更有 SMTP 和 IMAP4 供給商。
假如您用 JavaMail 1.1.3 訪問(wèn)一個(gè) POP 服務(wù)器,請(qǐng)下載并安裝一個(gè) POP3 供給商。Sun 就有一個(gè)單獨(dú)于 JavaMail 實(shí)現(xiàn)。下載并解開 pop31_1_1.zip 文檔后,將 pop3.jar 也添加到您的 CLASSPATH 中。
其次是JavaBeans Activation Framework 的安裝。JavaMail API 的任何版本都需要 JavaBeans Activation Framework 來(lái)支持任意數(shù)據(jù)塊的輸入及相應(yīng)處理。功能似乎不多,但現(xiàn)在許多瀏覽器和郵件工具中都能找到這種基本的 MIME 型支持。下載完框架后,解開 jaf1_0_1.zip 文檔,并將 activation.jar 文檔添加到 CLASSPATH 中。
對(duì)于 JavaMail 1.2 用戶來(lái)說(shuō),現(xiàn)在您應(yīng)該已將 mail.jar 和 activation.jar 文檔添加到 CLASSPATH 中了。而對(duì)于 JavaMail 1.1.3 用戶,現(xiàn)在您應(yīng)該已將 mail.jar、pop3.jar和 activation.jar文檔添加到 CLASSPATH 中了。假如不打算用 POP3,就不必將 pop3.jar 添加到 CLASSPATH 中去。
假如您不想更改 CLASSPATH 環(huán)境變量,將 jar 文檔復(fù)制到您 Java 運(yùn)行時(shí)環(huán)境(Java Runtime Environment,JRE)目錄下的 lib/ext 目錄中去。例如,J2SE 1.3 發(fā)行版的缺省目錄在 Windows 平臺(tái)的 C:\jdk1.3\jre\lib\ext。
Java Mail API有哪些核心類
Javax.mail.Session:Session 類定義了一個(gè)基本郵件會(huì)話(session),是Java Mail API最高層入口類。任何其他類都是經(jīng)由這個(gè)session 才得以生效。Session 對(duì)象用 Java.util.Properties 對(duì)象獲取信息,如郵件服務(wù)器、用戶名、密碼及整個(gè)應(yīng)用程式中共享的其他信息。
Javax.mail.Message:一旦獲得 Session 對(duì)象,就能夠繼續(xù)創(chuàng)建要發(fā)送的消息。這由 Message 類來(lái)完成。因?yàn)?Message 是個(gè)抽象類,必需用一個(gè)子類,多數(shù)情況下為 Javax.mail.internet.MimeMessage。MimeMessage 是個(gè)能理解 MIME 類型和頭的電子郵件消息,正如不同 RFC 中所定義的。雖然在某些頭部域非 ASCII 字符也能被譯碼,但 Message 頭只能被限制為用 US-ASCII 字符。
Javax.mail.Address:一旦您創(chuàng)建了 Session 和 Message,并將內(nèi)容填入消息后,就能夠用 Address 確定信件地址了。和 Message 相同,Address 也是個(gè)抽象類。您用的是 Javax.mail.internet.InternetAddress 類。
Javax.mail. Authenticator:和 Java.net 類相同,JavaMail API 也能夠利用 Authenticator 通過(guò)用戶名和密碼訪問(wèn)受保護(hù)的資源。對(duì)于JavaMail API 來(lái)說(shuō),這些資源就是郵件服務(wù)器。JavaMail Authenticator 在 Javax.mail 包中,而且他和 Java.net 中同名的類 Authenticator 不同。兩者并不共享同一個(gè) Authenticator,因?yàn)镴avaMail API 用于 Java 1.1,他沒(méi)有 Java.net 類別。
要使用 Authenticator,先創(chuàng)建一個(gè)抽象類的子類,并從 getPasswordAuthentication() 方法中返回 PasswordAuthentication 實(shí)例。創(chuàng)建完成后,您必需向 session 注冊(cè) Authenticator。然后,在需要認(rèn)證的時(shí)候,就會(huì)通知 Authenticator。您能夠彈出窗口,也能夠從配置文檔中(雖然沒(méi)有加密是不安全的)讀取用戶名和密碼,將他們作為 PasswordAuthentication 對(duì)象返回給調(diào)用程式。
Javax.mail.Transport:消息發(fā)送的最后一部分是使用 Transport 類。這個(gè)類用協(xié)議指定的語(yǔ)言發(fā)送消息(通常是 SMTP)。他是抽象類,他的工作方式和 Session 有些類似。僅調(diào)用靜態(tài) send() 方法,就能使用類的 缺省 版本:Transport.send(message);或,讀者也能夠從針對(duì)自己的協(xié)議的會(huì)話中獲得一個(gè)特定的實(shí)例,傳遞用戶名和密碼(假如不必要就不傳),發(fā)送消息,然后關(guān)閉連接。
Javax.mail.Store:Store類實(shí)現(xiàn)特定郵件協(xié)議上的讀、寫、監(jiān)控、查找等操作。通過(guò)Javax.mail.Store類能夠訪問(wèn)Javax.mail.Folder類。
Javax.mail.Folder:Folder類用于分級(jí)組織郵件,并提供照J(rèn)avax.mail.Message格式訪問(wèn)email的能力。
【編輯推薦】