作者:cleverpig(作者的Blog:http://blog.matrix.org.cn/page/cleverpig)
原文:http://www.matrix.org.cn/resource/article/44/44101_JavaMail.html
JavaMail API是读取、撰写、发送电子信息的可选包。我们可用它来建立如Eudora、Foxmail、MS Outlook Express一般的邮件用户代理程序(Mail User Agent,简称MUA)。让我们看看JavaMail API是如何提供信息访问功能的吧!JavaMail API被设计用于以不依赖协议的方式去发送和接收电子信息,文中着重:如何以不依赖于协议的方式发送接收电子信息,这也是本文所要描述的.
版权声明:本文可以自由转载,转载时请务必以超链接形式标明文章原始出处和作者信息及本声明
作者:cleverpig(作者的Blog:http://blog.matrix.org.cn/page/cleverpig)
原文:http://www.matrix.org.cn/resource/article/44/44101_JavaMail.html
关键字:java,mail,pop,smtp
一、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目录中也可以。
分享到:
相关推荐
在James 3.0.4 beta中,你需要配置SMTP监听的端口、身份验证机制(如PLAIN、LOGIN等)、以及是否允许外网发送邮件。`SendMail.java`可能是演示如何通过JavaMail API与SMTP服务器交互的示例代码,展示如何设置发件人...
3. 发送频率:控制发送速率,过快的发送可能会触发反垃圾邮件机制。 4. 收件人管理:确保已获得收件人的同意,尊重他们的隐私。 5. 软件安全:确保下载的软件来自可信赖的源,避免安装携带恶意软件的程序。 总的来...
本教程将详细讲解如何在`Winform`项目中调用邮件客户端以新建邮件并发送。 首先,我们需要了解如何启动邮件客户端。在Windows操作系统中,可以通过`System.Diagnostics.Process.Start()`方法来启动外部程序。对于...
通过学习这个“简单的垃圾邮件示例程序”,你可以了解到垃圾邮件的识别方法、邮件系统的运作机制,以及如何通过编程手段防范垃圾邮件。这不仅有助于提升网络安全意识,也有助于开发更强大的邮件处理工具。
本教程将围绕"简单邮件服务器例子123"这一主题,深入讲解如何构建及运行一个基本的邮件服务器。 首先,我们需要了解邮件服务器的基本原理。邮件服务器主要遵循SMTP(Simple Mail Transfer Protocol)协议来发送邮件...
首先,JavaMail API是Java平台上的一个开源库,用于处理电子邮件。它提供了一系列接口和类,允许开发者创建、发送、接收和处理邮件。要发送HTML格式的邮件,你需要了解`MimeMessage`类,它是JavaMail API中用于创建...
首先,JavaMail API简介部分会讲解JavaMail的基本概念,包括其设计目标、核心组件以及与SMTP(简单邮件传输协议)、POP3(邮局协议版本3)和IMAP(因特网消息访问协议)等电子邮件协议的关系。JavaMail API使得...
本教程“张孝祥Java邮件开发详解”深入探讨了如何使用Java来实现邮件的发送功能,涵盖了从基础概念到高级特性的全方位讲解。 首先,Java Mail API是Java中用于处理邮件的核心库,它提供了丰富的类和接口,使得...
本文将详细讲解如何使用邮件服务器以及相关的技术概念。 标题提及的“主要用于登录邮件服务器,接受邮件”是指用户通过客户端或Web界面与邮件服务器进行交互,以收发电子邮件的过程。邮件服务器通常遵循特定的协议...
下面将详细讲解Java邮件收发的核心知识点。 首先,JavaMail API是Java平台用于处理邮件的标准API,它提供了发送、接收、操作邮件的功能。在JavaMail API中,`javax.mail`和`javax.mail.internet`这两个包是核心,...
以下将详细讲解ASP.NET邮件收发管理的相关知识点。 1. **ASP.NET概述**: ASP.NET是.NET Framework的一部分,允许开发者使用多种编程语言(如C#、VB.NET)创建动态网页和Web应用。其优势包括自动垃圾回收、内存...
本教程将详细讲解如何使用易语言编写简单的电子邮件发送程序。 一、易语言基础 易语言的基本语法简洁明了,采用中文关键字,如“设置文本”、“打开文件”等,降低了学习编程的门槛。在易语言中,程序由模块、窗口...
本教程将详细讲解如何使用C++结合SMTP协议来实现邮件发送功能,主要关注对163和126邮箱的支持,以及理论上的QQ邮箱兼容性。 首先,理解SMTP协议的基础知识至关重要。SMTP是基于TCP/IP的应用层协议,通过它,邮件...
在现代的电子邮件系统中,垃圾邮件过滤器是一个至关重要的组件,它...通过这个演示,无论是IT专业人员还是普通用户,都能更深入地理解垃圾邮件过滤器的工作机制,从而更好地利用这些工具来维护电子邮件的清洁和安全。
本教程将详细讲解如何使用JavaMail API批量发送带有图片和附件的复杂邮件,并提供防邮件屏蔽的策略。 首先,我们需要了解JavaMail的基本概念。JavaMail API提供了对邮件服务器的访问,支持SMTP(简单邮件传输协议)...
本教程将详细讲解一个已经封装好的Java邮件发送工具类——`EasyEmailUtil`,它使得邮件发送变得简单易行,无需繁琐的配置,只需一键调用即可完成。 首先,`EasyEmailUtil`类通常会包含以下几个核心功能: 1. **...
下面我们将详细探讨如何利用VB.NET实现邮件发送功能,并基于提供的文件名来讲解相关知识点。 1. **VB.NET发送邮件的基本原理** VB.NET发送邮件主要依赖于`System.Net.Mail`命名空间中的`SmtpClient`和`MailMessage...
本文将详细讲解如何实现"svn提交文件自动邮件提醒",主要涉及`commit-email.pl`钩子程序的设置与使用。 `commit-email.pl` 是一个Perl脚本,通常作为SVN服务器的post-commit钩子,当用户提交代码到SVN仓库后,该...
本篇将详细讲解如何在Windows系统下搭建SVN服务器,并实现SVN自动发送邮件通知功能。 首先,我们需要了解Windows下搭建SVN服务器的基本步骤。这通常涉及到以下几个主要组件: 1. **安装SVN服务器**:常见的SVN...
- **垃圾邮件过滤**:集成反垃圾邮件机制,减少不必要的邮件干扰。 - **通知功能**:实现实时邮件提醒,例如通过桌面通知、移动应用推送等方式。 以上是关于“电子邮件发送与接收系统”的详细介绍,涵盖了其主要...