没有合适的资源?快使用搜索试试~ 我知道了~
史上很全的javamail api有例子有详细介绍,所有相关的类,抽象类以及关联关系都有,还有详细的例子
资源详情
资源评论
资源推荐
JavaMail API 是读取、撰写、发送电子信息的可选包。我们可用它来建立如
Eudora、Foxmail、MS Outlook Express 一般的邮件用户代理程序(Mail User Agent,简称
MUA)。让我们看看 JavaMail API 是如何提供信息访问功能的吧!JavaMail API 被设计用
于以不依赖协议的方式去发送和接收电子信息,文中着重:如何以不依赖于协议的方式发
送接收电子信息,这也是本文所要描述的.
一、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 时需要注意,当需要获
得如前面所讲的新邮件数量之类的信息时,我们不得不自己进行计算。
3.IMAP
IMAP 使用在接收信息的高级协议,目前版本为第 4 版,所以也被称为 IMAP4。需要注意
的是在使用 IMAP 时,邮件服务器必须支持该协议。从这个方面讲,我们并不能完全使用
IMAP 来替代 POP,不能期待 IMAP 在任何地方都被支持。假如邮件服务器支持 IMAP,那
么我们的邮件程序将能够具有以下被 IMAP 所支持的特性:每个用户在服务器上可具有多
个目录,这些目录能在多个用户之间共享。
其与 POP 相比高级之处显而易见,但是在尝试采取 IMAP 时,我们认识到它并不是十分完
美的:由于 IMAP 需要从其它服务器上接收新信息,将这些信息递送给用户,维护每个用
户的多个目录,这都为邮件服务器带来了高负载。并且 IMAP 与 POP 的一个不同之处是
POP 用户在接收邮件时将从邮件服务器上下载邮件,而 IMAP 允许用户直接访问邮件目录,
所以在邮件服务器进行备份作业时,由于每个长期使用此邮件系统的用户所用的邮件目录
会占有很大的空间,这将直接导致邮件服务器上磁盘空间暴涨。
4.MIME
MIME 并不是用于传送邮件的协议,它作为多用途邮件的扩展定义了邮件内容的格式:信
息格式、附件格式等等。一些 RFC 标准都涉及了 MIME:RFC 822, RFC 2045, RFC 2046,
RFC 2047,有兴趣的 Matrixer 可以阅读一下。而作为 JavaMail API 的开发者,我们并不需
关心这些格式定义,但是这些格式被用在了程序中。
5.NNTP 和其它的第三方协议
正因为 JavaMail API 在设计时考虑到与第三方协议实现提供商之间的分离,故我们可以很
容易的添加一些第三方协议。SUN 维护着一个第三方协议实现提供商的列表:http://
java.sun.com/products/javamail/Third_Party.html,通过此列表我们可以找到所需要的而又不被 SUN
提供支持的第三方协议:比如 NNTP 这个新闻组协议和 S/MIME 这个安全的 MIME 协议。
三、安装
1.安装 JavaMail
为了使用 JavaMail API,需要从 http://java.sun.com/products/javamail/downloads/index.html
下载文件
名格式为 javamail-[version].zip 的文件(这个文件中包括了 JavaMail 实现),并将其中的
mail.jar 文件添加到 CLASSPATH 中。这个实现提供了对 SMTP、IMAP4、POP3 的支持。
注意:在安装 JavaMail 实现之后,我们将在 demo 目录中发现许多有趣的简单实例程序。
在安装了 JavaMail 之后,我们还需要安装 JavaBeans Activation Framework,因为这个框架是
JavaMail API 所需要的。如果我们使用 J2EE 的话,那么我们并无需单独下载 JavaMail,因
为它存在于 J2EE.jar 中,只需将 J2EE.jar 加入到 CLASSPATH 即可。
2.安装 JavaBeans Activation Framework
从 http://java.sun.com/products/javabeans/glasgow/jaf.html
下载 JavaBeans Activation Framework,并将
其添加到 CLASSPATH 中。此框架增加了对任何数据块的分类、以及对它们的处理的特性。
这些特性是 JavaMail API 需要的。虽然听起来这些特性非常模糊,但是它对于我们的
JavaMail API 来说只是提供了基本的 MIME 类型支持。
到此为止,我们应当把 mail.jar 和 activation.jar 都添加到了 CLASSPATH 中。
当然如果从方便的角度讲,直接把这两个 Jar 文件复制到 JRE 目录的 lib/ext 目录中也可以。
四、初次认识 JavaMail API
1.了解我们的 JavaMail 环境
A.纵览 JavaMail 核心类结构
打开 JavaMail.jar 文件,我们将发现在 javax.mail 的包下面存在着一些核心类:
Session、Message、Address、Authenticator、Transport、Store、Folder。而且在
javax.mail.internet 包中还有一些常用的子类。
B.Session
Session 类定义了基本的邮件会话。就像 Http 会话那样,我们进行收发邮件的工作都是基于
这个会话的。Session 对象利用了 java.util.Properties 对象获得了邮件服务器、用户名、密码
信息和整个应用程序都要使用到的共享信息。
Session 类的构造方法是私有的,所以我们可以使用 Session 类提供的 getDefaultInstance()这
个静态工厂方法获得一个默认的 Session 对象:
Properties props = new Properties();
// ll props with any information
Session session = Session.getDefaultInstance(props, null);
或者使用 getInstance()这个静态工厂方法获得自定义的 Session:
Properties props = new Properties();
// ll props with any information
Session session = Session.getInstance(props, null);
从上面的两个例子中不难发现,getDefaultInstance()和 getInstance()方法的第二个参数都是
null,这是因为在上面的例子中并没有使用到邮件授权,下文中将对授权进行详细介绍。
从很多的实例看,在对 mail server 进行访问的过程中使用共享的 Session 是足够的,即使是
工作在多个用户邮箱的模式下也不例外。
C.Message
当我们建立了 Session 对象后,便可以被发送的构造信息体了。在这里 SUN 提供了
Message 类型来帮助开发者完成这项工作。由于 Message 是一个抽象类,大多数情况下,
我们使用 javax.mail.internet.MimeMessage 这个子类,该类是使用 MIME 类型、MIME 信息
头的邮箱信息。信息头只能使用 US-ASCII 字符,而非 ASCII 字符将通过编码转换为 ASCII
的方式使用。
为了建立一个 MimeMessage 对象,我们必须将 Session 对象作为 MimeMessage 构造方法的
参数传入:
MimeMessage message = new MimeMessage(session);
剩余13页未读,继续阅读
zyx80004
- 粉丝: 7
- 资源: 32
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论0