伺服器|郵件清單 Java Mail API 是Sun開發的最新標準擴充API之一,它給Java應用程式開發人員提供了獨立於平台和協議的郵件/通訊解決方案。本文介紹該API的核心機制,並通過一個郵件轉寄伺服器(郵件清單伺服器)示範其具體用法。
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瀏覽器的作用。