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


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


   一、 Java Mail API 介紹


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


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


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


   ◆javax.mail.Session


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


   ◆javax.mail.Store


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


   ◆javax.mail.Transport


   javax.mail.Transport類也是由服務提供者提供的類,實現用特定協議發送消息/郵件。


   ◆javax.mail.Folder


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


   ◆javax.mail.Message


   javax.mail.Message類模型化實際email消息的所有細節,如標題、發送/接收地址、發送日期等等。


   ◆Java Mail API 與 JAF


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