JavaMail
一、 JavaMail API 简介
JavaMail API 是 读 取 、 撰 写 、 发 送 电 子 信 息 的 可 选 包 。 我 们 可 用 它 来 建 立 如
Eudora、Foxmail、MS Outlook Express 一般的邮件用户代理程序(Mail User Agent,简
称 MUA)。而不是像 sendmail 或者其它的邮件传输代理(Mail Transfer Agent,简称
MTA)程序那样可以传送、递送、转发邮件。从另外一个角度来看,我们这些电子邮
件用户日常用 MUA 程序来读写邮件,而 MUA 依赖着 MTA 处理邮件的递送。
在清楚了到 MUA 与 MTA 之间的关系后,让我们看看 JavaMail API 是如何提供信息访
问功能的吧!JavaMail API 被设计用于以不依赖协议的方式去发送和接收电子信息,
这个 API 被分为两大部分:
基本功能:如何以不依赖于协议的方式发送接收电子信息,这也是本文所要描述的,
不过在下文中,大家将看到这只是一厢情愿而已。
第二个部分则是依赖特定协议的,比如 SMTP、POP、IMAP、NNTP 协议。在这部分
的 JavaMail API 是为了和服务器通讯,并不在本文的内容中。
二、 相关协议一览
在我们步入 JavaMail API 之前,先看一下 API 所涉及的协议。以下便是大家日常所知、
所乐于使用的 4 大信息传输协议:
SMTP
POP
IMAP
MIME
当然,上面的 4 个协议,并不是全部,还有 NNTP 和其它一些协议可用于传输信息,
但是由于不常用到,所以本文便不提及了。理解这 4 个基本的协议有助于我们更好的
使用 JavaMail API。然而 JavaMail API 是被设计为与协议无关的,目前我们并不能克服
这些协议的束缚。确切的说,如果我们使用的功能并不被我们选择的协议支持,那么
JavaMail API 并不可能如魔术师一样神奇的赋予我们这种能力。
1.SMTP
简单邮件传输协议定义了递送邮件的机制。在下文中,我们将使用基于 Java-Mail 的程
序与公司或者 ISP 的 SMTP 服务器进行通讯。这个 SMTP 服务器将邮件转发到接收者
的 SMTP 服务器,直至最后被接收者通过 POP 或者 IMAP 协议获取。这并不需要
SMTP 服务器使用支持授权的邮件转发,但是却的确要注意 SMTP 服务器的正确设置
(SMTP 服务器的设置与 JavaMail API 无关)。
2.POP
POP 是一种邮局协议,目前为第 3 个版本,即众所周知的 POP3。POP 定义了一种用户
如何获得邮件的机制。它规定了每个用户使用一个单独的邮箱。大多数人在使用 POP
时所熟悉的功能并非都被支持,例如查看邮箱中的新邮件数量。而这个功能是微软的
Outlook 内建的,那么就说明微软 Outlook 之类的邮件客户端软件是通过查询最近收到
的邮件来计算新邮件的数量来实现前面所说的功能。因此在我们使用 JavaMail API 时
需要注意,当需要获得如前面所讲的新邮件数量之类的信息时,我们不得不自己进行