Java Mail API的開發(fā)是Sun為Java開發(fā)者提供公用API框架的持續(xù)努力的良好例證。提倡公用框架,反對受限于供應(yīng)商的解決方案,充分預(yù)示著一個日益開放的開發(fā)環(huán)境的建立。


   在email通訊領(lǐng)域,面向最終應(yīng)用的開發(fā)者(以及用戶)已經(jīng)能夠購買到最適合他們需要的公用API框架實現(xiàn),而低層開發(fā)者能夠提供有效訪問特定郵件服務(wù)的解決方案。其意義在于:小型開發(fā)組能夠集中精力于開發(fā)高性能的客戶端郵件軟件,而為它提供不同郵件環(huán)境下的支持則變得相當(dāng)容易;大型開發(fā)組織則側(cè)重于為新開發(fā)的企業(yè)級郵件服務(wù)提供公用的訪問支持,并由此獲得豐富的應(yīng)用軟件支持。最大的贏家是信息系統(tǒng)用戶,它能夠按照要求(性能、投資等)方便地集成由不同廠商提供的產(chǎn)品和方案。 開發(fā)高度可重用的開放API框架的關(guān)鍵之一在于強調(diào)抽象接口技術(shù),即在支持現(xiàn)有標(biāo)準(zhǔn)的基礎(chǔ)上,支持未來擴展和可選實現(xiàn)。Java Mail API體現(xiàn)了這一思想。Sun和其它開發(fā)商正在為大多數(shù)現(xiàn)有的公用標(biāo)準(zhǔn)和協(xié)議提供缺省實現(xiàn)和工具。已經(jīng)可用的支持至少包括:POP3、SMTP、IMAP等。


   一、 Java Mail API 介紹


   Java Mail API 的結(jié)構(gòu)本身證明了它的開發(fā)者的基本目標(biāo)之一——軟件開發(fā)的工作量應(yīng)該取決于應(yīng)用程序本身的復(fù)雜程度以及開發(fā)者所要求的控制程度。換句話說,Java Mail API盡可能地保持簡單。本文所附示例程序ListServer(以及API軟件包所帶的演示程序)充分說明了這一點。


   乍看起來,Java Mail API所擁有的類總數(shù)以及類之間的關(guān)系可能讓人誤解為需要漫長的學(xué)習(xí)時間。實際上,一旦正式開始使用,你就會發(fā)現(xiàn)該API不失為在應(yīng)用程序中加入健壯的郵件/通訊支持的簡單工具。


   Java Mail API包括的類數(shù)量遠(yuǎn)遠(yuǎn)大于此處涉及的類數(shù)量。下面按照在一個典型的應(yīng)用程序中各個類出現(xiàn)過程為序,集中介紹部分核心類的功能和作用:


   ◆javax.mail.Session


   javax.mail.Session是Java Mail API最高層入口類。它最常用的方法用于為不同郵件協(xié)議控制和裝載SPI(即Service Provider Implementation)。如javax.mail.Store是通過Session類獲得的。


   ◆javax.mail.Store


   javax.mail.Store類實現(xiàn)特定郵件協(xié)議上的讀、寫、監(jiān)視、查找等操作。通過javax.mail.Store類可以訪問javax.mail.Folder類。


   ◆javax.mail.Transport


   javax.mail.Transport類也是由服務(wù)提供者提供的類,實現(xiàn)用特定協(xié)議發(fā)送消息/郵件。


   ◆javax.mail.Folder


   javax.mail.Folder類用于分級組織郵件,并提供按照javax.mail.Message格式訪問email的能力。


   ◆javax.mail.Message


   javax.mail.Message類模型化實際email消息的所有細(xì)節(jié),如標(biāo)題、發(fā)送/接收地址、發(fā)送日期等等。


   ◆Java Mail API 與 JAF


   值得一提的是,Java Mail API實際上依賴于另外一個Java 擴展JAF,即JavaBean活動框架(JavaBean Activation Framework)。JAF的目的在于統(tǒng)一處理不同數(shù)據(jù)格式的方法(不管數(shù)據(jù)格式為簡單文本還是由圖片、聲音、視頻甚至其它“活動”內(nèi)容共同組成的復(fù)合文檔)。在這個意義上,JAF對Java的作用正如插件對Web瀏覽器的作用。