一、JavaMail API 简介
JavaMail API是Sun公司为方便Java开发人员在应用程序中实现邮件发送和接收功能而提供的一套标准开发包,它支持一些常用的邮件协议,如:SMTP、POP3、IMAP和MIME等。开发人员使用JavaMail API编写邮件处理软件时,无须考虑邮件协议底层的实现细节,只要调用JavaMail开发包中相应的API类就可以了。JavaMail API封装在一个名mail.jar的文件中,它是开发JavaMail应用程序时所必须使用的核心jar包。
二、配置 JavaMail 开发环境
- 到Oracle官网下载mail.jar开发包,目前最新版本是1.4.5。下载成功后,会得到一个javamail1_4_5.zip的文件,然后解压。
- 解压后的目录结构如下图所示:
-
- mail.jar:就是开发javamail程序所必须要用到的核心开发包。
- demo子目录:示例程序。
- lib子目录:该目录下包含5个独立的邮件开发包:smtp.jar、pop3.jar、imap.jar和mailapi.jar,这5个jar文件是对mail.jar文件的分类包装。其中mailapi.jar封装了创建邮件内容和面向普通开发人员调用邮件发送和接收的API类,其它三个jar文件则是封装了它们名称相对应协议的服务实现程序。mailapi.jar与其它三个jar文件的关系,犹如JDBC API与各个数据库所实现jdbc驱动程序之间的关系一样。在编译Java邮件程序时,只需要mailapi.jar文件即可,但是,在运行时必须要有相应邮件协议的底层服务实现程序。如果应用程序中只需要使用到邮件发送功能,则可以只安装smtp.jar和mailapi.jar这两个文件,如果应用程序只需要使用邮件的接收功能,则可以只安装pop3.jar或imap.jar和mailapi.jar这两个jar文件,而不用安装整个mail.jar文件。
- doc子目录:javamail API文档
- 安装javamail
- 将mail.jar文件添加到系统环境变量CLASSPATH中,如下图所示:
- 将mail.jar文件拷贝到%JAVA_HOME%\jre\lib\ext目录下
以上两种方式选其中任意一种方式即可完成javamail的安装。
三、JavaMail API的分类及体系结构
JavaMail API按其功能可以划分为以下三大类:
- 创建和解析邮件内容的API
- 发送邮件的API
- 接收邮件的API
以上三种类型的功能由多个API类组成,但每个功能所设及到的核心API并不多,其它API类都是这些核心API的辅助类,了解这些核心API的功能及作用,掌握它们之间的工作关系和调用流程,就很容易编写出javamail程序了,对于核心API类所用到辅助类,可以在使用这些核心API的过程中顺藤摸瓜,边查文档边了解这些辅助类的用法即可。具我了解,JavaMail中的核心AIP类包含Message、Session、Transport、Store4个类,它们之间的工作关系,如下图所示:
核心API介绍:
- Message类
javax.mail.Message 类是创建和解析邮件的核心API,它的实例对象代表一封电子邮件。客户端程序发送邮件时,首先使用创建邮件的API,将要创建邮件的数据封装到Message对象中,然后把这个对象传递给邮件发送API发送出去。客户端程序接收邮件时,邮件接收API把接收到的邮件数据封装在Message类的实例对象中,客户端程序再使用邮件解析API,从这个对象中解析出接收到的邮件数据。
- Session类
javax.mail.Session 类用于定义整个应用程序所需的环境信息,以及收集客户端与邮件服务器建立网络连接的会话信息,如邮件服务器的主机名、端口号、采用的邮件发送和接收协议等。Session对象根据这些会话信息构建邮件收发的Store和Transport对象,以及为客户端创建Message对象提供信息支持。
- Transport类
javax.mail.Transport 类是发送邮件的核心API类,它的实例对象,代表实现了某个邮件发送协议的邮件发送对象,例如SMTP 协议。客户端程序创建好Message对象后,只需要使用邮件发送API得到 Transport 对象,然后把 Message 对象传递给 Transport 对象,并调用它的发送方法,就可以把邮件发送给指定的SMTP服务器。
- Store类
javax.mail.Store 类是接收邮件的核心API类,它的实例对象代表实现某个邮件接收协议的邮件接收对象,例如POP3和IMAP协议。客户端程序接收邮件时,只需要使用邮件接收API得到Store对象,然后调用Store对象的接收方法,就可以从指定的 POP3服务器中获得邮件数据,并把这些邮件数据封装到表示邮件的Message对象中。
四、JAF 简介
JAF(JavaBeans Activation Framework,JavaBeans 激活框架)是一个专用的数据处理框架,它用于封装数据,并为应用程序提供访问和操作数据的接口。JavaMail API可以利用JAF从某种数据源中读取数据和获知数据的MIME类型,并用这些数据生成MIME消息中的消息体和消息类型。
JAF的主要作用在于让Java应用程序知道如何对一个数据源进行查看、编辑和打印等操作。大家知道,在MS Word程序中可以打开一篇Word文档中嵌套的Visio图片,JAF就是让Java程序能够完成类似的技术应用,让应用程序知道数据源支持哪些操作,每个操作分别调用哪个处理模块。对于通过JAF 封装的数据,应用程序通过JAF提供的接口可以完成如下功能:
- 访问数据源中的数据
- 获知数据源的数据类型
- 获知可对数据进行的各种操作
- 用户对数据执行某种操作时,自动创建执行该操作的软件部件的实例对象
例如,如果使用JAF处理一个图片文件,那么应用程序通过JAF提供的接口就可以得到对图片文件进行操作的输入输出流,图片文件的MIME类型,JAF为图片文件提供的操作方法(如查看、编辑或打印图片等),应用程序调用这些操作时,JAF就会调用相应的处理模块对数据进行处理。
在Oracle官网可以下载到JAF的jar包,下载后得到的是一个名为activation.jar文件,现在最新版本是1.1。
注意:JDK1.6集成了JAF框架,如果使用的是JDK1.6以上版本,则可以不用单独下载JAF框架。
相关推荐
在本学习笔记中,博主孙风涛详细记录了张孝祥讲师主讲的《Java邮件开发》课程,涵盖了电子邮件基础知识、邮件协议、JavaMail API的使用、邮件内容的组织、编码及发送过程,以及在Web应用中集成邮件功能的实践。...
总的来说,James的学习笔记详细地介绍了JavaMail 1.4.1的核心特性和使用方法,对于想要在Java环境中处理电子邮件的开发者来说,是一份宝贵的参考资料。通过深入学习和实践,我们可以更好地理解和利用JavaMail的强大...
Java学习笔记涵盖了许多重要的编程概念和技术,特别是在JavaMail、Oracle数据库管理和索引、自定义对象序列化以及数据库导入导出方面。以下是对这些主题的详细解释: 1. **JavaMail**: JavaMail是一个用于处理...
【J2EE学习笔记概述】 J2EE,全称为Java 2 Platform, Enterprise Edition,是Oracle公司(原Sun Microsystems)...2010年的J2EE学习笔记将帮助初学者理解这个框架,同时也对有经验的开发者提供了回顾和提升的资源。
本项目涉及的是使用JavaMail API开发的一个电子邮件客户端程序,开发环境为NetBeans。JavaMail API是一个强大的开源库,它允许开发者在Java应用程序中处理邮件协议,如SMTP(简单邮件传输协议)、POP3(邮局协议)和...
### JavaEE5学习笔记01-JTA和数据库事务:深入解析与应用 #### 一、JavaEE5概览与核心组件 JavaEE5是Java Enterprise Edition的第五个版本,标志着企业级Java应用的一个重要里程碑。它引入了一系列重要的新特性,...
这个压缩包文件“J2EE知识点大全,学习笔记”显然是一个关于J2EE的综合学习资料,其中可能包含了J2EE的多个核心概念和技术。下面,我们将深入探讨J2EE的关键知识点。 1. **Servlet与JSP**:Servlet是Java服务器端...
### 韩顺平JSP学习笔记与源代码解析 #### J2EE的十三种技术(规范) 在韩顺平老师的教学笔记中,首先提到了J2EE平台下的十三种核心技术,这些技术对于理解JSP及其相关的Web开发环境至关重要。 1. **Java数据库...
**J2EE学习笔记概述** Java 企业版(Java Enterprise Edition,简称J2EE)是Oracle公司提供的一个用于开发和部署企业级应用的开放平台。它涵盖了多种技术规范和服务,旨在提供可扩展、安全且高效的分布式应用程序...
【CXF Webservice初学笔记】是针对Apache CXF框架的学习记录,这是一套用于构建和部署Web服务的开源工具。这篇笔记可能涵盖了如何使用CXF来创建、发布和调用Web服务的基础知识,同时也可能涉及到CXF与其他相关技术如...
#### JavaEE的开发环境 Eclipse是一个广泛使用的开源IDE,非常适合JavaEE开发。虽然Eclipse本身仅支持JavaSE项目的开发,但可以通过安装额外的插件(如Lomboz或MyEclipse)来扩展支持JavaEE项目。这些插件提供了...
**标题:** Java学习笔记 **描述:** 关于Java开发的一些笔记,旨在帮助大家共同学习进步。 **关键词:** Java开发、笔记、学习 #### 二、日期处理 1. **日期格式化**: Java提供了多种方式来格式化日期,包括使用`...
【标题】:“项目笔记” 这篇“项目笔记”可能是一份关于软件开发的文档,其中包含了作者在进行项目工作时的...对于想要学习Java Web开发,特别是邮件服务和批量处理的开发者来说,这些内容将是非常有价值的参考资料。
10. **集成开发环境(IDE)**:如Eclipse和IntelliJ IDEA,它们提供强大的Java EE项目管理和调试工具,加速开发过程。 11. **部署与容器**:理解如何在Tomcat、Glassfish、WildFly等应用服务器上部署Java EE应用,...
Java发送邮件是软件开发中常见的需求,特别是在自动化通知、用户验证和客户服务等方面。在这个主题下,我们将探讨三种Java实现邮件发送的方式,以及如何通过提供的代码和参考资料进行实践。 首先,让我们了解一下...
- **JavaMail API**:提供邮件服务接口。 - **JMS(Java Message Service)**:支持企业级的消息传递。 ### 5. 模块化开发 J2EE应用可以被划分为多个模块,如WAR(Web Application Archive)和EAR(Enterprise ...
- **MyEclipse**:一个基于Eclipse平台的商业集成开发环境,提供了对Java Web开发的完善支持。 ### 软件开发实践 - **实作培训专家**:强调理论学习与实践操作相结合的教学方法,注重学生实践能力的培养。 根据...
Eclipse开源项目mywork是一个基于Java的开发平台,包含了多个模块化的工具和应用程序,旨在提供一个集成化的开发环境。这个项目展示了Eclipse平台的强大扩展性和灵活性。以下是对每个子文件的详细解读: 1. **...
在IT行业中,J2EE(Java 2 Platform, Enterprise Edition)...同时,配合课上笔记和博客文章的学习,可以巩固理论知识并将其应用于实践。通过这样的学习过程,你将能够熟练掌握J2EE开发,并具备解决企业级问题的能力。