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浏览器的作用。