文档详情

JAVAMAIL编程源代码.pdf

发布:2017-06-18约2.2万字共19页下载文档
文本预览下载声明
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是如何提供信息访问 功能的吧!JavaMailAPI被设计用于以不依赖协议的方式去发送和接收电子信息,这个API 被分为两大部分: 基本功能:如何以不依赖于协议的方式发送接收电子信息,这也是本文所要描述的,不 过在下文中,大家将看到这只是一厢情愿而已。 第二个部分则是依赖特定协议的,比如SMTP、POP、IMAP、NNTP协议。在这部分的JavaMail API是为了和服务器通讯,并不在本文的内容中。 二、相关协议一览 在我们步入JavaMailAPI之前,先看一下API所涉及的协议。以下便是大家日常所知、 所乐于使用的4大信息传输协议: SMTP POP IMAP MIME 当然,上面的4个协议,并不是全部,还有NNTP和其它一些协议可用于传输信息,但 是由于不常用到,所以本文便不提及了。理解这4个基本的协议有助于我们更好的使用 JavaMail API。然而JavaMail API是被设计为与协议无关的,目前我们并不能克服这些协 议的束缚。确切的说,如果我们使用的功能并不被我们选择的协议支持,那么JavaMailAPI 并不可能如魔术师一样神奇的赋予我们这种能力。 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:RFC822,RFC2045,RFC2046,RFC 2047,有兴趣的Matrixer可以阅读一下。而作为JavaMailAPI的开发者,我们并不需关心 这些格式定义,但是这些格式被用在了程序中。 5.NNTP和其它的第三
显示全部
相似文档