JavaMail API 基础 (一)
来源:互联网 发布:看韩漫的软件 编辑:程序博客网 时间:2024/05/01 19:45
JavaMail API 简介
JavaMail API 是一个用来阅读、编写和发送电子信息的可选包(标准扩展),你可以用这个包创建邮件用户代理(MUA)类型的程序,类似Eudora、Pine 和 Microsoft Outlook,它的主要用途不是像 sendmail 和其他邮件传输代理程序(MTA)那样传输、分发、和转发信息。可以这么说,用户使用MUA类型的程序读写email,而MUA依赖MTA来处理实际的分发。
JavaMail API 分成两部分,该API提供了协议无关的信息访问:
- 第一部分是本文所关注的,基本包括怎么协议无关地(无需考虑协议实现、差异)发送和接收消息
- 第二部分讲述了协议相关语言,像 SMTP、POP、IMAP 和 NNTP等与JaveMail API的关系,为了与服务器交流,需要协议提供者,而创建协议相关的协议提供者不在本文的讨论范围。
回顾相关协议
在深入 JavaMail API 细节之前, 先回顾一下与之相关的协议, 你将要了解其中四个最基本的:
- SMTP
- POP
- IMAP
- MIME
SMTP
POP
POP代表的是邮局协议,现在是第三版,也就是POP3,RFC 1939中定义了该协议。POP是许多人在网络上获取邮件的机制,它定义了对每个用户一个邮箱的支持,这就是它所有的工作了,这也是大多数困惑的来源。许多用户熟悉的功能像查询有多少新邮件,在POP中是不支持的,这些功能都在程序中实现,如记录最后接收的邮件和计算有多少封新邮件。因此,在使用 JavaMail API 的时候,如果你想知道这些信息,那么必须自己计算。
IMAP
IMAP是用来接收邮件的一个更加高级的协议,在RFC 2060中定义,代表的是因特网消息访问协议,现在是第4版,也就是IMAP4。使用IMAP的时候,你的邮箱服务器必须支持这个协议,不能只是在程序中用IMAP替换POP,然后希望支持所有IMAP协议提供的功能。假设你的邮箱服务器支持IMAP,那么基于JavaMail API 的程序便可以让用户在服务器中拥有多个文件夹,并且这些文件夹可以被多个用户共享。
有这些高级的功能,你可能会以为IMAP应该被广泛使用,但事实并非如此。这样做的话会大大加重服务器的负担,因为需要服务器接收新邮件,在有请求的时候分发给用户,并且为每个用户在多个文件夹中维护这些邮件信息。由于它采取集中存储,当用户长期使用的邮箱文件夹越来越大时,每个用户都会受到磁盘耗尽的威胁。而使用POP的话,被保存下来的文件就从邮箱服务器中移除了。
MIME
MIME即多用途因特网邮件扩展,它不是一个邮件传输协议,而是定义了传输的内容:消息格式、附件等等。许多不同的文档都有相关内容:RFC 822,RFC 2045,RFC2046和RFC 2047。作为JavaMail API的用户,你不需要关心这些格式,然而它们存在并且被你的程序使用。
NNTP和其它
由于JavaMail API 中提供者和其他部分的分离,你可以简单地为附加协议添加支持。SUN维护了一张第三方提供者列表,它们利用了SUN不提供支持的协议,你可以在那里找到NNTP(网络新闻传输协议)的支持,S/MIME(安全的MIME)等等。
- JavaMail API 基础 (一)
- javamail模拟邮箱功能发送电子邮件-基础实战篇(javamail API电子邮件实例)
- 使用JavaMail API发送邮件失败(一)
- javamail总结(一)
- (一)JavaMail 简介
- JavaMail API详解(转载)
- JavaMail API详解(转)
- JavaMail API
- JavaMail API
- JavaMail API
- JavaMail API
- JavaMail API
- JavaMail API
- javamail API
- JavaMail JavaMail发送和接收邮件API(详解)
- javamail收mail(一)
- JavaMail中的国际化(一)
- JavaMail邮件开发(一)
- PHP中动态创建变量名(可变变量)
- 使用ZBar来读取条形码和二维码的方法
- Android异步消息框架
- warning LNK4221: 未找到公共符号;存档成员将不可访问
- google protobuf 源码阅读(一)
- JavaMail API 基础 (一)
- 关注细节-TWaver Android
- 控制台修改mysql数据库root登陆密码
- QEMU源码剖析(一)
- hdu1422 重温世界杯
- 把C++类成员方法直接作为线程回调函数
- 润乾报表动态合并单元格
- CSS 表格样式-不错~~积累!
- hibernate 应该学什么