JavaMail API - 概述
JavaMail API 提供了一个独立于平台和协议的框架来构建邮件和消息传递应用程序。JavaMail API 提供了一组抽象类,这些抽象类定义了组成邮件系统的对象。它是一个可选包(标准扩展),用于读取、撰写和发送电子邮件。
JavaMail 提供了用于构建消息传递系统接口的元素,包括系统组件和接口。虽然本规范没有定义任何特定的实现,但 JavaMail 确实包含几个实现 RFC822 和 MIME 互联网消息传递标准的类。这些类作为 JavaMail 类包的一部分提供。
以下是 JavaMail API 中支持的一些协议:
SMTP:简单邮件传输协议的缩写。它提供了一种发送电子邮件的机制。
POP:邮局协议的缩写。POP 是互联网上大多数人用来接收邮件的机制。它定义了对每个用户单个邮箱的支持。RFC 1939 定义了此协议。
IMAP:互联网消息访问协议的缩写。它是一种用于接收消息的高级协议。它为每个用户提供多个邮箱的支持,此外,邮箱可以由多个用户共享。它在 RFC 2060 中定义。
MIME:多用途互联网邮件扩展的缩写。它不是邮件传输协议。相反,它定义了传输的内容:消息的格式、附件等。这里有许多不同的文档生效:RFC 822、RFC 2045、RFC 2046 和 RFC 2047。作为 JavaMail API 的用户,您通常不需要担心这些格式。但是,这些格式确实存在,并且被您的程序使用。
NNTP 和其他:有许多由第三方提供商提供的协议。其中一些是网络新闻传输协议 (NNTP)、安全多用途互联网邮件扩展 (S/MIME) 等。
这些细节将在后续章节中介绍。
架构
如上所述,Java 应用程序使用 JavaMail API 来撰写、发送和接收电子邮件。下图说明了 JavaMail 的架构:

JavaMail API 的抽象机制与其他 J2EE API(如 JDBC、JNDI 和 JMS)类似。如上图所示,JavaMail API 分为两个主要部分:
独立于应用程序的部分:应用程序编程接口 (API) 由应用程序组件用来发送和接收邮件消息,与所使用的底层提供程序或协议无关。
服务相关部分:服务提供程序接口 (SPI) 使用特定于协议的语言,例如 SMTP、POP、IMAP 和网络新闻传输协议 (NNTP)。它用于将电子邮件服务提供程序插入到 J2EE 平台。