JAVA 邮件收发系统设计与开发(论文+源码)_Nueve

摘 要

电子邮件在当今社会中扮演了一个很重要的角色。越来越多的人在使用它。而且用它的人数势必会继续增加。本文介绍了Javamail邮件收发系统的开发背景,对国内外现有的多种成熟的电子邮件系统进行分析和比较,总结出它们的优缺点,对Javamail技术进行深入研究,提出并设计实现了基于Javamail的邮件收发系统。本系统利用SMTP协议和POP协议从底层进行开发,利用JavaMail API为收发邮件提供与协议无关的访问。SMTP(简单邮件传输协议)是专门用来发送邮件的。POP(邮局协议)是专门用于接收邮件的。JavaMail API是一种可选的、能用于读取、编写和发送电子消息的标准扩展包。

本文主要可分为四个部分。第一部分介绍了Javamail邮件系统的意义和现状。第二部分具体介绍了几种相关协议和Javamail API。第三部分主要介绍了系统的开发工具JAVA语言、Eclipse及其安装过程与配置方法。第四部分详细阐述了Javamail邮件收发系统的实现过程。

关键词:SMTP,POP,JAVAMAIL,邮件收发

MAIL SYSTEM BASED ON JAVAMAIL

ABSTRACT

E-Mail play a very important role in modern times. More and more people are using it, and the number of it will larger and larger. This paper introduced the javamail system's development background, analyzed and compared some existing maturity Email system at home and abroad , summarized their advantages and disadvantages, studied deeply with the javamail technology , proposed and designed out the mail system based on javamail. This system used POP protocol and SMTP protocol to develop from the bottom, used JavaMail API to provide the visit which has nothing to do with the agreement for send and receive email. SMTP (Simple Mail Transfer Protocol) is designed to send a message. POP (Post Office Protocol) is designed to receive mail. JavaMail API is an standard expansion package which is optional, can be used to read, write and send electronic messages.

This paper can be divided into four parts. The first part introduced javamail email system's significance and status. The second part introduced several related agreements and JavaMail API. The third part mainly introduced system's development tools JAVA language , Eclipse and their installation process and configuration method. The fourth part detailed javamail email system's realization process.

KeywordsSMTP, POP, JAVAMAIL, Email to send and receive

目 录

第一章   

1.1 电子邮件介绍

1.2 研究意义

1.3 研究现状

第二章 相关邮件协议和JavaMail API

2.1 相关邮件协议

2.2 JavaMail API

2.2.1 JavaMail API简介

2.2.2 JavaMail API核心类

2.3.3 JavaMail API的应用

第三章 应用系统开发工具

3.1 Java开发语言简介

3.2 开发工具Eclipse

3.3 开发软件的安装

3.3.1 JAVA环境的安装与配置

3.3.2 Eclipse的安装

3.3.3 javamail的安装

第四章 JavaMail系统的实现

4.1环境配置与界面搭建

4.2设置邮件服务器参数的实现

4.3 创建与发送邮件功能的实现

4.3.1 装载邮件服务器属性, 并与其建立连接

4.3.2 构建邮件

4.3.3 创建Transport对象发送邮件

4.4 接收邮件功能的实现

4.4.1 获取服务器信息

4.4.2 建立通信连接

4.4.3显示邮件

4.5 删除邮件功能的实现

第五章 结语

参考文献

 

第一章  绪 论

本文是一项基于JavaMail的邮件系统的综合性研究,使用Sun公司提供的JavaMail API实现电子邮件的发送、电子邮件的接收等等功能。

1.1 电子邮件介绍

电子邮件(简称E-mai1)又称电子信箱、电子邮政,它是—种用电子手段提供信息交换的通信方式。它是全球多种网络上使用最普遍的一项服务。这种非交互式的通信,加速了信息的交流及数据传送,它是—个简易、快速的方法。通过连接全世界的Internet,实现各类信号的传送、接收、存贮等处理,将邮件送到世界的各个角落。到目前为止,可以说电子邮件是Internet资源使用最多的一种服务,E-mai1不只局限于信件的传递,还可用来传递文件、声音及图形、图像等不同类型的信息。

电子邮件不是一种“终端到终端”的服务,是被称为“存贮转发式”服务。这正是电子信箱系统的核心,利用存贮转发可进行非实时通信,属异步通信方式[1]。即信件发送者可随时随地发送邮件,不要求接收者同时在场,即使对方现在不在,仍可将邮件立刻送到对方的信箱内,且存储在对方的电子邮箱中。接收者可在他认为方便的时候读取信件,不受时空限制。在这里,“发送”邮件意味着将邮件放到收件人的信箱中,而“接收”邮件则意味着从自己的信箱中读取信件,信箱实际上是由文件管理系统支持的—个实体。因为电子邮件是通过邮件服务器(mai1 server)来传递档的。通常mail server是执行多任务操作系统UNIX的计算机,它提供24小时的电子邮件服务,用户只要向 mail server管理人员申请—个信箱账号,就可使用这项快速的邮件服务。

电子邮件的工作原理:

1) 电子邮件系统是一种新型的信息系统,是通信技术和计算机技术结合的产物。

电子邮件的传输是通过电子邮件简单传输协议(Simple Mail Transfer Protocol,简称SMTP)这一系统软件来完成的,它是Internet下的一种电子邮件通信协议。

2) 电子邮件的基本原理,是在通信网上设立“电子信箱系统”,它实际上是一个计算机系统。系统的硬件是一个高性能、大容量的计算机。硬盘作为信箱的存储介质,在硬盘上为用户分一定的存储空间作为用户的“信箱”,每位用户都有属于自己的—个电子信箱。并确定—个用户名和用户可以自己随意修改的口令。存储空间包含存放所收信件、编辑信件以及信件存盘三部分空间,用户使用口令开启自己的信箱,并进行发信、读信、编辑、转发、存档等各种操作,系统功能主要由软件实现。

3) 电子邮件的通信是在信箱之间进行的。用户首先开启自己的信箱,然后通过键入命令的方式将需要发送的邮件发到对方的信箱中。邮件在信箱之间进行传递和交换,也可以与另—个邮件系统进行传递和交换。收方在取信时,使用特定账号从信箱提取。

1.2 研究意义

随着社会的发展,科技的进步,作为信息载体的计算机日益显露出其举足轻重的地位。当今社

会已步入了信息社会,知识经济将成为新世纪的主导产业。人们传统的联系方式也在不断的被改变。伴随着Internet的发展,电子邮件以其使用简易、投递迅速、收费低廉,易于保存、全球畅通无阻等等优点被广泛地应用,它使人们的交流方式得到了极大的改变。电子邮件已是人们沟通、交流的重要工具。

由于E-mail是当今人们交流的重要工具之一,因而,对E-mail系统的研究也逐渐变的热起来。基于JavaMail邮件系统具有快捷、方便的优点,吸引了众多的网络用户,使其成为E-mail研究方向的热点之一。

最初人们在使用E-mail服务时,必须使用邮件客服端,如:Outlook、Foxmail等软件,去接收邮件服务器上的邮件。由于操作系统的不同,往往需要不同的邮件接收客户端,给人们接收邮件带来很大的不便。但是基于JavaMail的邮件系统只要一个网络浏览器就可以实现E-mail的日常收发功能,而网络浏览器是任何操作系统中都自带的软件,用户在世界任何一个角落任何一台计算机都可以进行E-mail的收发工作。

此外,由于最初用户接收邮件的设置信息均保存在客服端,当用户重新安装操作系统或者更换计算机还要重新设置,而基于JavaMail的邮件收发系统的设置保存在邮件服务器上,不论你更换电脑还是系统,收发邮件的方式都是按照以前的设置进行的,使邮件的收发更合你的口味。

基于JavaMail的邮件系统让你不在为机器配置担忧,而且还为用户的邮件安全分担忧愁。

由于最初需要使用客服端软件收发软件,硬件配置低的计算机就显得“爱莫能助”了。虽然计算机的发展使得硬件问题不再是个问题,但是不强调硬件的配置也是基于JavaMail邮件系统的一个优点之一。此外,由于客户端软件维护和升级困难,网络浏览器的更新速度要远远大于邮件客户端软件的更新速度,这就给用户一个更安全的环境。

日前,基于JavaMail邮件系统的发展越来越成熟。多线程的设计方法,大大的提高了系统的通信效率和成本;采用MVC设计模式的邮件系统还大大的减少了系统的维护量。

当然,基于JavaMail的邮件系统缺乏对动态页面的支持能力,没有集成有效地数据库处理功能,也存在系统扩展性差、数据处理速度稍慢等缺点。但是,这些问题已经有了很好的起步,将不再是大的问题。

电子邮件系统经过几十年的发展,已经形成了完善的技术体系。邮件服务器系统在保留了电子邮件系统最初的收发邮件、邮件存储等基本功能的同时,融入了最新的计算机与网络技术,使电子邮件系统有了全新的改观 。邮件技术的发展趋势如下:

(1) Web邮件技术

随着中国Internet应用的日益普及和逐步深入,这些数字仍在不断增长。但是对于电子邮件系统来说,单纯使用邮件客户端程序进行邮件的收发已经不能满足用户移动办公的需要。Web邮件技术的出现,彻底解决了用户办公的需要,使得邮件用户可以在任何地方使用浏览器登录邮件服务器收发邮件,而不用配置邮件客户端程序。

(2) 多域邮件服务

所谓多域邮件服务,即是一台物理服务器为多个独立注册Internet域名的企业或单位提供电子邮件的服务,在逻辑上,这些企业和单位拥有自己独立的邮件服务器,也可以称为虚拟邮件服务器技术。对于ISP提供商和企业集团公司来说,多域邮件服务器的支持能力是选择邮件服务器的一个重要考虑因素。它可以方便地扩展其横向邮件服务能力。

(3) Linux邮件服务器

Linux操作系统作为目前应用最为广泛的开源操作系统,具有性能稳定、可靠性高和价格低廉的特点。使用Linux作为邮件服务器,主要是可以与Sendmail、MySQL等开源软件共同使用,在满足用户需求的基础上降低了系统价格。

(4) 安全防护

现在的邮件服务器在安全防护技术上有了较大的提高,包括数据身份认证、传输加密、垃圾邮件过滤、邮件病毒过滤、安全审计等的多项安全技术在邮件服务器中都得到了很好的应用。

(5) 多语言

目前光中文就有若干字符集,如GB-18030、GB-2312、Big5等等,虽然我们可以统一标准,但是,在实际的过程中,我们不可能统一所有的邮件客户端,因此我们只能要求邮件服务器支持多语言的环境,使“我们的沟通无障碍”。

(6) 远程监控和性能调整

由于目前许多邮件服务器处于电信托管等方式,不可能经常进行本地操作,因此目前邮件服务器均提供了远程邮件监控的功能。我们可以通过Web方式,监控邮件服务器的工作状态,包括在线用户数、邮件处理数量和速度、存储空间使用率等,并且可以随时对出现的发信高峰和网络攻击进行远程处理[2]。

总之,计算机的广泛应用,Internet的不断发展,E-mail在日常通讯中的地位越来越重要。虽然传统的C/S模式的邮件系统仍占有重要地位,但基于JavaMail的邮件收发系统会以其快捷、方便的等等优点为越来越多的人所接收,广泛的应用到各个领域,成为一名后起之秀。

1.3 研究现状

E-mail是信息化时代最重要的联系工具之一,在日常的工作学习中具有非常重要作用。对E-mail的研究也层出不穷,基于JavaMail邮件系统的设计与实现大多数都是研究和使用Sun公司提供的JavaMail API去实现其邮件发送和接收功能。

第二章 相关邮件协议和JavaMail API

2.1 相关邮件协议

邮件的传送要依赖于具体的传输协议,主要有:SMTP、POP3、MIME。

(1)SMTP:简单邮件传输协议,它是一组用于由源地址到目的地传送邮件的规则,或者说是由它来控制信件传输的一种中转方式。SMTP协议属于TCP/IP协议族,它帮助每台计算机在发送或中转邮件时找到下一个目的地。通过SMTP协议所指定的服务器,我们就可以把Email寄到收信人的服务器上了,整个过程只需要几分钟。SMTP的开发最初是为了在封闭的网络中传送相对来说不太重要的简短信件,而不是为了在互联网中传送重要而敏感的信息,因此最初通过SMTP传输信件时 ,安全性不高。

(2)POP:邮局协议[5],当前的版本为3,也称作POP3。POP是一种允许用户从邮件服务器收发邮件的协议,它有两种版本,即POP2和POP3,都具有简单的电子邮件存储转发功能。POP2和POP3本质上类似,都属于离线式工作协议,但是由于使用了不通的协议端口,两者并不兼容。与SMTP协议相结合,POP3是目前最常用的电子邮件服务协议。在离线工作方式下,用户收发邮件时,首先通过POP3客户程序登录到支持POP3协议的邮件服务器,然后发送邮件及附件;接着,邮件服务器为该用户收存的邮件传送给POP3客户程序,并将这些邮件从服务器上删除;最后,邮件服务器将用户提交的发送邮件,转发到运行SMTP协议的计算机中,通过它实现邮件的最终发送。在为用户从邮件服务器收取邮件时,POP3是以该用户当前存储在服务器上全部邮件为对象进行操作的,并一次性将它们下载到用户端计算机中。一旦客户的邮件下载完毕,邮件服务器对这些邮件的暂存托管即告完毕。使用POP3,用户不能对他们贮存在邮件服务器上的邮件进行部分传输,离线工作方式适合那些从固定计算机上收发邮件的用户使用。

(3)MIME: 多用途网际邮件扩充协议,是最初的互联网电子邮件协议的一个扩展,说明了如何安排消息格式使消息在不同的邮件系统内进行交换。 MIME 的格式灵活,使人们能使用这一协议在互联网上交换不同类型的数据文件:音频,视频,图像,应用软件和其他类型的文件,也包括在最初的协议—简单邮件传送协议(SMTP)中的ASCII文本。

(4)IMAP:IMAP使用在接收信息的高级协议,目前版本为第4版,所以也被称为IMAP4。需要注意的是在使用IMAP时,邮件服务器必须支持该协议。从这个方面讲,我们并不能完全使用IMAP来替代POP,不能期待IMAP在任何地方都被支持。假如邮件服务器支持IMAP,那么我们的邮件程序将能够具有以下被IMAP所支持的特性[6]:每个用户在服务器上可具有多个目录,这些目录能在多个用户之间共享。其与POP相比高级之处显而易见,但是在尝试采取IMAP时,我们认识到它并不是十分完美的。由于IMAP需要从其它服务器上接收新信息,将这些信息递送给用户,维护每个用户的多个目录,这都为邮件服务器带来了高负载。并且IMAP与POP的一个不同之处是POP用户在接收邮件时将从邮件服务器上下载邮件,而IMAP允许用户直接访问邮件目录,所以在邮件服务器进行备份作业时,由于每个长期使用此邮件系统的用户所用的邮件目录会占有很大的空间,这将直接导致邮件服务器上磁盘空间暴涨。

(5)NNTP和其它的第三方协议:正因为JavaMail API在设计时考虑到与第三方协议实现提供商之间的分离,故我们可以很容易的添加一些第三方协议。SUN维护着一个第三方协议实现提供商的列表:Oracle Java Technologies | Oracle,通过此列表我们可以找到所需要的而又不被SUN提供支持的第三方协议:比如NNTP这个新闻组协议和S/MIME这个安全的MIME协议。

2.2 JavaMail API

2.2.1 JavaMail API简介

JavaMail API是SUN为Java开发者提供对电子邮件处理的延伸,能用于读取、编写和发送电子消息的包(标准扩展)。为管理电子邮件提供了统一的应用编程接口,它可以处理各种e-mail格式(包括IMAP、POP、SMTP以及MIME)和其他Internet相关的讯息通信协定。

用户可使用这种包创建邮件用户代理(Mail User Agent,MUA)类型的程序,它类似于Foxmail、Eudora以及Miceosoft Outlook这些邮件程序。其主要目的不是像发送邮件或其他邮件传输代理(Mail Transfer Agent,MTA)类型的程序那样用于传输、发送和转发消息[7]。换句话说,用户可以与MUA类型的程序交互,以阅读和撰写电子邮件。MUA依靠MTA处理实际的发送任务。

2.2.2 JavaMail API核心类

(1)Session:Session类定义了基本的邮件会话。就像Http会话那样,我们进行收发邮件的工作都是基于这个会话的。Session对象利用了java.util.Properties对象获得了邮件服务器、用户名、密码信息和整个应用程序都要使用到的共享信息。

第三章 应用系统开发工具

本次程序设计所采用的开发环境为:

(1)AMD Athlon(TM),512M内存,80G硬盘

(2)Microsoft® Windows™ XP Professional

(3)The Eclipse Foundation®Eclipse3.4(Java)

(4)Sun® JDK1.5或以上

运行环境为:

(1)Intel® Pentium® 2及以上处理器,32M以上内存,4G以上硬盘

(2)Microsoft® Windows™ 9X/NT操作系统

(3)800*600或以上的屏幕分辨率

(4)确保机器上安装有JDK 1.5或者以上版本

3.1 Java开发语言简介

Java 2是SUN公司推出的新一代面向对象的程序设计语言,它是一种简单的面向对象的分布式可移植性能优异的多线程的动态语言。它具有以下的特点:

(1)简单

Java最初是为了对家用电器进行智能化控制而设计的一种语言,因此它特别的简单明了。它的简单性体现在以下三个方面[12]:

①Java的编程风格类似于C++的风格,因此大家都比较熟悉。

②Java中没有C++中的指针和内存管理的概念,可以避免犯C++中的常见错误。

③在Java中有丰富的类库,大大方便了编程工作。

(2)面向对象的特性

面向对象性可以说是Java最重要的特性。Java语言的设计完全是面向对象的,它不支持类似于C语言那样的面向过程的程序设计技术。Java支持静态和动态风格的代码继承及重用。

(3)分布性

Java有很强的网络特性。通过它特有的类,可以方便地处理TCP/IP协议和访问网络资源。它的分布计算的特性正是它得以在网络时代风靡的重要原因。

(4)鲁棒性

Java中对应不同的类具有的Exception,正是这些不同的Exception可以防止因为程序员的错误而造成系统的崩溃。

(5)安全性

Java不支持指针,因此一切对内存的访问都必须通过对象的实例变量来进行,因此可以有效的

防范病毒的入侵。

(6)体系结构中立

Java的解释器可以生成与系统体系结构无关的字节码指令,一个系统只要安装了Java虚拟机就可以执行Java程序了。

(7)多线程性

Java的多线程能够保证程序的并行执行。而且同步机制保证了对共享数据的正确操作,方便用户在网络上的实时交互操作,提高系统的处理能力。

(8)动态性

Java的设计使它适合于一个不断发展的环境。在类库中可以自由地加入新的方法和实例变量而不会影响用户程序的执行,并且Java通过接口来支持多重继承,使之比严格的继承类具有更灵活的方式和扩展性。同时用户也可以创建自己的特有的类,以方便操作和提高编程能力。

3.2 开发工具Eclipse

Eclipse:Eclipse 是一个开放源代码的、基于 Java 的可扩展开发平台。就其本身而言,它只是一个框架和一组服务,用于通过插件组件构建开发环境。幸运的是,Eclipse 附带了一个标准的插件集,包括 Java 开发工具(Java Development Tools,JDT)。 Eclipse 还包括插件开发环境(Plug-in Development Environment,PDE),这个组件主要针对希望扩展 Eclipse 的软件开发人员,因为它允许他们构建与 Eclipse 环境无缝集成的工具。

Eclipse是一种通用工具平台——普遍适用的开放式扩展IDE,它提供了功能丰富的开发环境,允许开发者高效地创建一些能够无缝集成到Eclipse平台中的工具。Eclipse的体系结构[13]为: 底层为JAVA开发环境插件(JDT),插件开发环境(PDE),其他的第三方插件。中层为Eclipse的图形界面(包括——工作台,Jface,SWT),核心为工作空间(workspace)和运行时内核(runtime)。

Eclipse的设计思想是:一切皆为插件。Eclipse的核心是非常小的,其他所有的功能都是以插件的形式附加到这个Eclipse核心之上。这样的功能插件包括他的图形API(称为SWT/JFace)、JAVA开发环境插件(JDT)、插件开发环境(PDE)等。Eclipse还对这些插件的协同工作提供了良好的支持,不仅安装简单,而且还可以无缝结合。

Eclipse对这些插件是动态载入动态调用的。所谓动态就是指,Eclipse启动后要真正用到这个插件时,它才会被调入内存,当插件不再被使用时,它就会被在适当的时候清除出去。因此即使装了一大堆插件在Eclipse里,也不必担心某些不常用的插件白白占着内存。

3.3 开发软件的安装

3.3.1 JAVA环境的安装与配置

在安装Eclipse之前,需要先安装JDK(Java Development Kits)。

在JDK安装完成之后,一般需要设置计算机系统的环境变量,以便于其它软件确定JDK的安装位置。在WindowsXP操作系统环境,具体操作步骤如下:

1.选择“开始”菜单中的“控制面板”命令,打开控制面板窗口,双击选择“系统”,打开如图3-1所示的“系统属性”对话框。

2.单击“系统属性”对话框中的“环境变量”按钮,进入图3-2所示的“环境变量”对话框。在该对话框中可以设置只有当前用户登录时才有效的用户变量,也可以设置该系统的所有用户登录时都有效的系统变量。

3.在“环境变量”对话框中单击“新建”按钮,在打开图3-3所示的新建系统变量对话框输入变量名为JAVA_HOME,其环境变量的值应该设置为JDK的安装位置。

4.然后在如图3-2所示的“环境变量”对话框中再次选择Path环境变量,将%JAVA_HOME%\bin;添加到对应的变量值后面,注意和前面的值用“;”隔开。单击“确定”按钮即可完成JDK相关环境变量的设置。

5.在“环境变量”对话框中单击“新建”按钮,在打开图3-5所示的新建系统变量对话框中输入变量名为CLASSPATH,其环境变量的值设置为dt.jar和tools.jar的安装位置。

图3-1 系统属性对话框

3-2 环境变量对话框

图3-3 新建系统变量对话框

4-1 系统界面

 4-2 POP3SMTP服务器属性设置

如果您在计算机领域有任何疑虑或不确定的地方,请毫不犹豫地与老师交流噢,我们期待着为您提供有针对性的建议和指导。您的问题和讨论对我们来说都非常重要。

  • 21
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值