基于JavaMail的电子邮件收发系统毕业设计样本_第1页
基于JavaMail的电子邮件收发系统毕业设计样本_第2页
基于JavaMail的电子邮件收发系统毕业设计样本_第3页
基于JavaMail的电子邮件收发系统毕业设计样本_第4页
基于JavaMail的电子邮件收发系统毕业设计样本_第5页
已阅读5页,还剩42页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

目录第1章概述 11.1研究目和意义 11.2国内外发展趋势和现状 21.3系统特点 4第2章有关技术和工具简介 62.1Swing简介 62.2JavaMail简介 62.3Java平台简介 72.4Eclipse简介 7第3章系统需求分析和总体设计 93.1顾客对电子邮件系统需求 93.2产品可行性分析 103.3系统总体设计 123.3.1电子邮件系统功能 123.3.2电子邮件收发过程 133.3.3服务器参数设立 14第4章详细设计…………………..154.1登录功能设计 154.2发送邮件设计 154.3接受邮件设计 164.4邮件管理设计 17第5章系统功能编码实现 185.1顾客登录界面实现 185.2主界面实现 195.3邮件配备界面实现 205.4发送邮件界面实现 215.5接受邮件界面实现 22第6章系统实现功能测试 246.1登录测试 246.2发送测试 246.3接受邮件测试 266.4查看邮件测试 266.5删除邮件测试 27第7章总结 29参照文献 30致谢 31附录:某些源程序代码 32附件1:开题报告附件2:译文及原文影印件第1章概述随着信息时代到来,Internet广泛应用,相信人们对qq邮箱,163邮箱,yahoo邮箱已经并不陌生,这一类邮箱浮现是计算机和网络不断发展成果,与每个人都密不可分,已经成为网络中最广泛使用一某些。1.1研究目和意义从人类发展开始,信息互换始终都是人类基本需求之一。人们会通过各种途径来实现信息互换,从而达到一种交流。从此前快马送信和口耳相传到如今电话电脑和邮政系统,随着先进技术不断进步,人类信息交流方式也始终在进步,其中电子邮件服务就是计算机和网络技术浮现之后一种例子。它较此前更加以便快捷,深受人们爱慕。电子邮件又被称为电子邮箱,是一种典型通过先进技术电子手段提供信息互换一种通信方式,同步也是Internet所有应用中最广泛服务。电子邮件不是只局限于信件传递了,而是此外还涉及文献,声音及图形图像等信息传递。这种非交互式通信方式,加速了数据传送从而更快达到信息交流,增进了社会发展。她是一种简朴且迅速办法,电子邮件系统通过连上全世界网络,顾客就可以免费地并且非常快(几秒钟之内)可以将信息发送到世界上任何你指定目地。同步,顾客也可以从电子邮件系统中得到大量免费新闻、专项邮件,并实现轻松信息搜索。这是任何老式方式也无法相比。电子邮件最明显地特点是“存贮转发式”服务,并不是一种“终端到终端"服务,运用这种存贮转发可以进行异步通信,即信件发送人可以在任何时间任何地点发送文献,这并不规定接受者必要同步在场,虽然是对方不在,发送者邮件还是可以立即送到对方信箱内,并进行了存储,这样接受者可以在她以便时登录邮箱来收取邮件,来查看邮件内容,这不必受届时间空间限制。这种存贮转发服务也正是电子邮箱系统核心。随着上网顾客越来越多,上网速度越来越快,作为网络基本应用电子邮件系统所面临问题也日益突出,不论是使用免费邮箱,还是163.com等,还是使用收费个人邮箱,ISP提供虚拟机邮箱都存在着种种问题。介于当下流行各大邮件客户端软件除了最重要收发信件之外,功能越来越复杂,但是咱们寻常生活中真正用到功能却很少,同步作为中小型公司,邮箱成本也越来越高,诸多功能特别对于计算机知识相对缺少人来说,显得太过华丽且不太实用。有鉴于此,在理解smtp和pop3等底层合同基本之上,开发了这个各种功能相对简朴实用邮件系统,简化了顾客操作。1.2国内外发展趋势和现状电子邮件是互联网最基本且最重要服务之一。据记录,当前全世界电子邮件账号超过15亿个,电子邮件成为Internet上所占比例最大应用。中华人民共和国互联网络信息中心关于中华人民共和国互联网发展状况记录报告(1月)表白,国内当前上网人数9400万,人均拥有电子邮箱1.5个。尚有另一项数据表白,互联网上百分之三十业务量都是电子邮件,由于国内通信设施较差,以及网络速度慢等弊端,快捷电子邮件服务更具实用性。《CINNIC中华人民共和国互联网络发展状况记录报告》中指出,中华人民共和国顾客最常使用网络服务71.65%是电子邮件,而搜索引擎和上传或下载服务分别只占50.40%和44.16%。初期电子邮件系统在网络形成时候就已经浮现了,1961年时候,麻省理工学院在7094大型机系统上开发出了一套兼容时分共享系统(CTSS)。这也容许许多顾客使用主机新能力,使顾客可以用新办法来共享信息。当CTSS系统顾客需要向其她顾客传递信息时,她们会在一种通用目录下以“TOTOM”之类文献名简历一种文献,查看或者打印其中内容,在这种简朴信息发送办法基本上,浮现了第一种“邮件”工具,通过这个工具,CTSS系统管理员可以向顾客发送信息。例如某个顾客她丢失文献已经通过备份找回,这是通过在目录顾客中创立特定文献来实现。这后来,CTSS系统上也浮现了用于顾客之间信息传递邮件工具。在其她多顾客系统上,也陆续开发和使用了类似邮件软件。这些软件工作原理类似,都是在顾客目录下设立一种特殊目录,一种顾客给另一种顾客发信时,就在收信者牡蛎下建立一种新文献,并在其中保存新建内容。当收信者稍后登陆主机上时,检查该目录就可以懂得自己有新邮件,并可以打开和查看邮件内容,这些初期邮件系统虽然非常简陋,也存在诸多问题,但是其基本思想都是通过文献传递来实现顾客之间异步传播,和今天所用电子邮件系统基本相似。当代电子邮件系统正式在这些原始邮件软件基本上发展而来。到了20世纪60年代末70年代初,在美国国防部领导下,当代INTERNET前身—ARPANET开始建立和运营,它将成员单位多台主机连接起来构成了一种网络。当时,网络内大某些主机上都已有了内部邮件系统,于是一种很自然想法浮现了,就是能否运用ARPANET使这些邮件系统可以互相通信。事实上,邮件系统互联正式ARPANETA最初期网络应用尝试之一。1969年,在ARPANET原型网还在实验时候,拉里罗伯特编写了第一种通过网络发送电子邮件程序。1971年1月,ARPARFC196《邮箱合同(MailBoxProtocol)》中讨论了如何通过ARPANET发送邮件问题。之后有各种类似RFC文献进行了这个方面探讨。由于当时FTP合同已经比较成熟,而邮件发送始终没有成熟合同,因此某些人开始研究运用FTP合同来发送邮件办法。1972年8月,在RCF385《关于FTP合同注释》中第一次提出通过扩展FTP合同办法来发送电子邮件。之后某些RFC文献进一步对该方案进行了改进。在1973年一次会议上,人们统一在FTP命令中使用“顾客名@主机名”形式地址来标明邮件地址,这被写入了RFC469文献。RFC498则提出了不用FTP合同进行邮件传播办法。这些方案由于各种因素都未能得到推广使用,ARPANET上邮件系统始终处在各自为政状态。除了邮件收发问题外,邮件格式也是电子邮件合同中一种重要内容。1977年,洛克等人提出来一种统一邮件格式原则,也就是日后RFC733.但是这次统一邮件格式原则尝试并未能获得成功。这便是早起ARPNET上电子邮件系统。早起各种基于网络电子邮件传播合同都存在这样那样问题。要么功能不完善,要么过于复杂。人们需要是一种全新,易于实现而有功能强大电子邮件传播合同。1980年,RFC772《邮件传播合同》发布了,其中描述了一种全新邮件传播合同。但是这个合同还是过于复杂了,于是人们在它基本上又进行了改进,纵欲在1981年RFC780中发布了简朴邮件传播合同,通过某些晓得改进后,最总形成了RFC821《SMTP合同》,这也正是今天电子邮件系统原则传播合同。统一邮件传播合同自然需要统一邮件格式,1982年,克鲁克在RFC733基本上编写RFC822《APRAInternet文本信息格式原则》,她也最后成为电子邮件原则格式。但是在RFC822格式中,邮件都是文本格式,没有考虑非文本邮件内容问题。不久人们就对电子邮件提出更多规定,但愿能用它来发送非文本格式附件,如图片,多媒体文献等。于是在1996年又发布了RFC2045—2049,规定了MIME编码格式。通过这种格式,可以实现各种文献和文本信息之间无损转换,这样就可以将她们封装在原则RFC822格式文本邮件中直接发送,从而使电子邮件系统也可以发送非文本信息了。日后,人们依照邮件系统中使用问题,又陆续对SMTP合同以及其父树合同进行了某些小修改,如增长顾客身份认证功能等。到当前为止,SMTP合同最新版本是RFC2821,邮件格式规范最新版本是RFC2822。这便是当代电子邮件系统浮现。从以上分析中可以得出这样结论,由于在电子邮件系统存在种种缺陷,咱们要学会重新设计出一种全新,每个地方都考虑到并彻底解决各种安全问题和隐患电子邮件系统,用它来代替既有电子邮件系统给人们提供更高一层服务。但遗憾是,由于各种现实问题,(如环境,技术,资金等)使其在可预见将来,依然是一种不也许实现任务,但是无论如何,一种已经成功或者试图成功电子邮件系统,必要要可以较好解决这些问题[2]。1.3系统特点邮件服务器提供服务类型,可以分为发送邮件服务器(简称发送服务器)和接受邮件服务器(简称接受邮件服务器)。发送邮件服务器使用邮件发送合同,当前惯用是SMTP,因此普通发送邮件服务器也称为SMTP服务器;接受邮件服务器使用接受邮件合同,惯用是POP3合同,因此普通接受邮件服务器也称为POP3服务器。SMTP(SimpleMailTransferProtocol),即简朴邮件传送合同,是互联网传送电子邮件基本合同,是TCP/IP合同构成员,它可以解决邮件系统如何通过一条链路,把邮件从一台机器上传送到另一台机器上问题,它特点是具备较好可伸缩性和简朴性,因而它在广域网和局域网都能合用,并且在Internet上可以发送邮件服务器几乎都支持SMTP合同,这也正是它成功核心。服务器接受客户端发过来SMTP合同格式命令,这些命令有HELO,MAILFROM,RCPTTO,DATA,QUIT,服务器接到这些命令后,给出相应响应码,然后发给客户端。POP3(PostOfficeProtocol3)是邮局合同第3个版本,它规定邮件客户端怎么从服务器那里接受邮件,是第一种电子邮件离线合同原则。它既容许接受服务器向邮件顾客发送邮件,也可以接受来自SMTP服务器邮件,邮件客户端软件会与POP3服务器之间进行交互,下载由POP3服务器接受到邮件,POP3合同支持顾客从服务器上接受邮件然后存储到自己计算机上,同步依照客户端操作删除或保存在邮件服务器上邮件,服务器接受客户端发过来POP3合同格式命令,这些命令有USER,PASS,LIST,RETR,DELE,REST,QUIT,服务器接到这些命令后,给出相应响应信息+OK或者-ERR,然后连同邮件信息发给客户端。基于POP3合同邮件系统能提供快捷,实惠服务,因而深受广大顾客青睐。POP3合同也是TCP/IP合同族中一员,由RFC1939定义。第2章有关技术和工具简介2.1.Swing简介Swing是一种专门用于开发Java顾客界面程序工具包。它是在抽象窗口工具包(AWT)基本上让跨平台JAVA程序可以使用所有可插拔界面风格,Swing程序员只需要用简朴代码就可以运用Swing模块化,丰富功能和灵活组件来编出美丽系统界面。工具包中包都以swing来命名,例如javax.swing.event。Swing开发包所有是用Java来实现,Swing自身不依赖于操作系统,也没有除JAVA之外其他代码,是一种轻量级组件,这就是她和AWT却别。由于AWT是通过与详细操作系统有关对等类来实现,因此Swing要比AWT具备更加强实用性。Swing在所有平台上体现都是一致,并且能体现出除当前系统之外其他界面风格。Swing效仿了MVC设计模式,即"模型-视图-控制",其中模型是专门用来存储内容,视图是专门用来查看内容,控制器是用来负责顾客输入。在AWT中,由于控制界面外观对等类和详细平台息息有关,因而AWT组件外观只和本机外观有关,但是Swing能使程序在一种操作系统上运营时候有不同外观以供顾客可以选取自己习惯外观。2.2JavaMail简介JavaMail是由Sun提供API,但是它没有被放在JAVA原则基本开发包中,表白你在开发JAVAMAIL系统时需要此外下载JAVAMAIL包。此外,你还得下载Sun公司JAF包,JAF非常复杂,JAVAMAIL运营需要JAF支持。JavaMail包是可选,因而如果需要使用话你需要一方面从下载。当前最新版本是JavaMail1.4,使用JavaMail时候需要下载JAF,安装JavaMail只是需要把她们加入到CLASSPATH中去,如果你不想修改CLASSPATH话,可以直接把她们jar包copy到JAVA_HOME/lib/ext下,这样JavaMail就安装好了[5]。JavaMail包中用于解决电子邮件核心类是:Session,Message,Address,Authenticator,Transport,Store,Folder等。Session定义了一种基本邮件会话,它需要从Properties中读取类似于邮件服务器,顾客名和密码等信息。此外较好实现了JavaMailAPI框架有James、SpringMail。2.3Java平台简介Java平台由Java虚拟机和Java核心类所构成,它为纯Java程序提供了统一编程接口,而不论下层操作系统是什么,Java平台更分细一点话重要是由一种compiler(编译器),一种运营环境(runtimeenvironment),和一种核心API构成。Java应用编程接口为Java应用提供了一种独立于操作系统原则接口,可分为基本某些和扩展某些,在安装了Java运营平台后,Java程序就可以被运营了。JavaAPI为分为基本某些与扩展某些,Java应用提供了一种独立于操作系统原则接口。因而Java程序只需要编译一次,就可以在所有系统中运营。Java应用编程接口已经从1.1x版发展到1.2版。当前惯用JDK版本是1.6,最新版本为1.7。与老式程序不同,Sun公司在推出Java之际就将其作为一种开放技术,全球数以万计Java开发公司被规定所设计Java软件必要互相兼容,“Java语言靠群体力量而非公司力量”为Sun公司一种标语,并得到了大多数软件开发公司认同,这和微软公司模式不同,微软倡导是注重精英和封闭模式,Java程序设计语言是个面向对象,简朴、解释性、分布式、安全、健壮与系统无关、高性能、可移植、动态和多线程语言。Java平台是基于Java语言平台,这样平台非常流行,因而微软公司推出了与之竞争.NET平台以及模仿JavaC#语言,Java是一种可以在不同操作系统(例如windows,unix等)上运营编程语言,java平台是指运营在各种终端(如pc、服务器、移动设备、嵌入式设备)系统软件,PC机上java程序是用javaSE开发出来,服务器端java程序是用javaEE开发出来,移动设备java程序是用javaME开发出来。2.4Eclipse简介Eclipse是一种开放源代码、基于Java可扩展开发平台。就其自身而言,它只是一种框架和一组服务,用于通过插件组件构建开发环境。幸运是,Eclipse附带了一种原则插件集,涉及Java开发工具(JavaDevelopmentKit,JDK)。虽然大多数顾客很乐于将Eclipse当作Java集成开发环境(IDE)来使用,但Eclipse目的却不但限于此。Eclipse还涉及插件开发环境(Plug-inDevelopmentEnvironment,PDE),这个组件重要针对但愿扩展Eclipse软件开发人员,由于它容许她们构建与Eclipse环境无缝集成工具。由于Eclipse中每样东西都是插件,对于给Eclipse提供插件,以及给顾客提供一致和统一集成开发环境而言,所有工具开发人员都具备同等发挥场合。这种平等和一致性并不但限于Java开发工具。尽管Eclipse是使用Java语言开发,但它用途并不限于Java语言;例如,支持诸如C/C++和COBOL等编程语言插件已经可用,或预测将会推出。Eclipse框架还可用来作为与软件开发无关其她应用程序类型基本,例如内容管理系统。基于Eclipse应用程序一种突出例子是IBM®;Rational®;SoftwareArchitect,它构成了IBMJava开发工具系列基本。至于Eclipse安装一方面要创立一种java工作环境,在sun网站上下载j2se,安装到自己系统中,我下载是1.4版本,安装目录为“D:\j2sdk1.4.2_04”。下载地址为:设立环境参数环节如下:右键“我电脑”-“属性”-“高档”-“环境变量”增长:java_home=D:\j2sdk1.4.2_04\ClassPath=d:\j2sdk1.4.2_04\;d:\j2sdk1.4.2_04\lib\tools.jar;d:\j2sdk1.4.2_04\lib\dt.jar;d:\j2sdk1.4.2_04\binPath=d:\j2sdk1.4.2_04\bin\环境就设立好了。第3章系统需求分析和总体设计3.1顾客对电子邮件系统需求(1)

以便性。电子邮件系统可以像离线QQ信息同样,在自己有时间时候可以解决记录下来祈求,通过电子邮件可以以便快捷地传送文本信息、图像文献、报表和计算机程序等信息。(2)

快捷性。电子邮件在传递过程中,若某个通信站点发现顾客给出收信人电子邮件地址有错误而无法继续传递时,电子邮件会迅速地将原信件逐站退回,并告知其因素。当邮件被送到目地后,该计算机邮件系统就及时将它放人收件人信箱中,等待顾客自行读取。顾客只要随时以计算机联机方式打开自己电子邮件信箱,便可以查看自己邮件。

(3)

广域性。电子邮件系统具备开放性,许多没有连接到互联网顾客可以通过本机网关(Gateway)和网络上顾客互相互换邮件。(4)

透明性。电子邮件系统采用“存储转发”办法协助顾客传送电子邮件,通过在互联网络某些通信节点计算机上运营相应软件,使这些计算机充当“邮局”角色。当顾客但愿通过互联网络给别人发送邮件时,一方面要与为自己提供电子邮件计算机联机,然后把要发送邮件和收件人邮件地址发给邮件系统。电子邮件系统就会把顾客邮件通过网络一站一站地送到目地,所有过程对于顾客来说都是透明。(5)

便宜性。网络空间可以说是无限大,公司可以将不同产品以及服务信息放置在网络上,这样顾客就可以随时从网络上获取这些信息,并且相对于电话,邮寄或印刷来说在网上存储与发送信息是非常便宜。在公司与顾客“一对一”关系电子邮件服务中,费用低廉,从而节约大量费用。(6)

全天性。对顾客而言,电子邮件长处之一是没有任何时间上限制。一天24小时,一年365天内,任何时间都可发送电子邮件。例如,当顾客发生问题时,她们随时都可以把发生问题发送给公司,而公司关于负责人可以在她以便时候,查阅这些信件,决定哪些信件必要一方面解决,哪些可以稍后解决,哪些应当转发给其她部门去承办。而此前没有电子邮件时,顾客产品自身或产品在使用过程中发生了问题,需要等到公司人员上班时,才干给公司打电话。并且什么时候打电话也很讲究,打早了,公司负责人还没有上班,打晚了公司负责人又也许出去开会了。电子邮件全天候服务,从主线上解决了这种状况,大大改进了公司与顾客关系,改进了公司对顾客服务。3.2产品可行性分析电子邮件系统涉及电子邮件客户端和电子邮件服务器端,其中通过SMTP合同进行发送邮件,POP3合同进行接受邮件。电子邮件系统工作过程和有关收发合同如下图:图3.1电子邮件系统工作过程图JavaMail是Sun发布用来解决E-mailAPI。它可以以便执行某些惯用邮件传播。JavaMailAPI是Java对电子邮件解决延伸,它可以解决各种E-mail格式,涉及IMAP,POP3,SMTP,为Java应用程序提供了收发电子邮件公共接口,如下图所示:图3.2JavaMailAPI客户端工作原理图JavaMailAPI重要位于ernet中,重要类框架图如下:图3.3JavaMailAPI中重要类框架图1.javax.mail.Session:Session类代表JavaMail中一次邮件会话.每个基于JavaMail应用程序至少有一次会话,也可以产生多次会话.发送邮件之前,普通应当建立邮件会话。它作用有:(1)接受各种配备属性信息:通过Properties对象设立属性信息;(2)初始化JavaMail环境:依照JavaMail配备文献,初始化JavaMail环境以便通过Session对象创立其她重要类实例。2.javax.mail.Transport:邮件操作只有发送或接受两种解决方式,JavaMail将这两种不同操作描述为传播(javax.mail.Transport)和存储(javax.mail.Store),传播相应邮件发送,而存储相应邮件接受。3.java.mail.Store该类实际特定邮件合同上读,写,监视,查找等操作,通过javax.mail.Store类可以访问javax.mail.Folder类.4.javax.mail.MimeMessage该对象是实际发送电子邮件信息.邮件对象普通使用MimeMessage创立,创立该对象时应传入一种邮件会话参数.该类采用InternetHeaders类来解析和保存e-mail顶级RFC822文献头[9].该类包括如下属性:Protectedbyte[]content该e-mail内容字节数组protectedinternetHeadersheaders返回保存该e-mail文献头对象voidaddFrom(Address[]addresses为该e-mail设立发件人地址voidaddHeader(Stringname,Stringvalue)在name文献头内容上增长value;voidaddRecipients(Message.RecipientTypetype,Address[]addresses)该办法还有一种重载办法,都是增长指定类型收件地址.Address[]getFrom返回该e-mail发件人地址列表voidsetContent(Multipartmp)为该e-mail设立内容5.javax.mail.Address该对象用于拟定发件人/收件人地址..和Message同样,Address是个抽象类,时间使用是她子类,ernetAddress类.一旦您创立了Session和Message,并将内容填入消息后,就可以用Address拟定信件地址了6.javax.mail.Folder:Folder类用于分级组织邮件,并提供照Javax.mail.Message格式访问email能力。3.3系统总体设计3.3.1电子邮件系统所包括功能图3.4系统功能图本系统重要涉及:(1)登录系统:用某个邮箱账号和密码登录;(2)接受邮件:从指定邮箱服务器获取邮件;(3)发送邮件:用此账号发送邮件到指定电子邮箱地址,涉及发送普通文本和附件;(4)群发邮件:将邮件群发给指定邮件地址列表,涉及抄送等;(5)邮件管理:查看邮件,删除邮件;(6)系统配备:配备邮箱服务器smtp地址和pop3地址;3.3.2电子邮件收发过程图3.5电子邮件收发过程图电子邮件服务基于客户/服务器模式,其工作过程如下:邮件客户端和邮件服务器通过POP3合同收取邮件;通过SMTP传播邮件内容,实现邮件信息互换。SMTP通过顾客代理(UA)和邮件传播代理程序(MTA)实现邮件传播。

发送方编辑完毕电子邮件发送给本地邮件服务器,邮件服务器收到客户送来邮件,依照收件人邮件地址发送到对方邮件服务器中。对方邮件服务器接受到其她邮件服务器发来邮件,并依照邮件地址分发到相应电子邮箱中,这样接受方可通过电子邮箱来读取邮件,并对她们进行有关解决。

电子邮件在发送与接受过程中都要遵循SMTP、POP3等合同,这些合同保证了电子邮件在各种不同系统之间传播。其中,SMTP负责电子邮件发送,而POP3则用于接受Internet上电子邮件。3.3.3服务器设立顾客在发送和接受邮件时候,需要设立好邮件服务器地址、邮箱账号和密码等这些信息。该系统提供了对上述配备设立和存储功能,这里,咱们将配备信息存储在一种属性文献里面。其文献名为perties,位于工程根目录下,可使用perties类setProperty()办法和getProperty()办法对属性文献中属性内容进行存取。本系统smtpperties文献内容格式如下:popAddress=pop3服务器地址(如)smtpAddress=smtp服务器地址(如)username=顾客名(如xyz)password=密码(如123456)第4章详细设计4.1登录功能设计(1)选取登录服务器,连接服务器。(2)选取指定邮件地址和密码。在本系统中有所提供Mail服务器创立了账户进行登录。必要选用对的邮件地址和密码才可以登录,在该模块中,顾客输入账户和密码,程序会依照顾客输入顾客名和密码在顾客信息数表中查找,如果查找成功,就进入系统主界面,如果查找失败,就会报错。登录设计重要有下图几种环节。图4.1登录流程图4.2发送邮件设计(1)编写文本邮件。该内容是电子邮件系统中最基本功能。顾客需填写邮件信息:涉及收件人,主题,文字内容。(2)上传附件。在编写邮件时,邮件内容可以和附件(如图片,声音等)一起发送,这样就需要先将附件上传到服务器,然后再发送给对方。发送邮件设计如下图所示:图4.2发送邮件流程图4.3接受邮件设计(1)接受邮件。涉及发件人,发件时间。这是一种电子邮件系统最基本功能。(2)浏览到邮件列表,也可看到邮件主题,是准时间先后排序。接受邮件设计如下图所示:图4.3接受邮件流程图4.4邮件管理设计(1)查看邮件内容。涉及发邮件时间,邮件内容和主题,以及发件人,以达到信息传递(2)删除邮件。要删除邮件,只需先选取某邮件,再单击删除命令就可以删除邮件。此外还可以批量删除邮件,这也只需要各种选取邮件,再单击删除就能实现。邮件管理设计如下图所示:图4.4邮件管理图第5章系统功能编码实现5.1顾客登录界面实现顾客选取相应邮件服务器然后输入账号密码登录,邮件服务器配备会保存到配备文献中。例如选取是@则SMTP地址为:,POP3地址为:。5.1登录界面图某些实现核心代码: privatebooleansaveConfig(){ Stringserver=(String)typeBox.getSelectedItem(); ConfigBeanconfigBean=newConfigBean(); configBean.setUserName(userNameText.getText()+server); configBean.setPassWord(passWordText.getText()); configBean.setType(server); if(server.equals("@")){ configBean.setSmtpAddress(""); configBean.setPopAddress(""); }elseif(server.equals("@163.com")){ configBean.setSmtpAddress(""); configBean.setPopAddress(""); }else{ configBean.setUserName(userNameText.getText()+"@"); configBean.setSmtpAddress(""); configBean.setPopAddress(""); } ReturnTypetype=PropertiesUtility.saveConfig(configBean); if(type==ReturnType.RIGHT){ returntrue; } returnfalse; }5.2主界面实现当顾客登录后,会进入到该界面,可以选取需要服务(发邮件,收邮件,服务器配备(Config)),点击左边相应邮件功能按钮,右边会显示相应邮件界面。图5.2主界面图某些实现核心代码:publicvoidsetLayout(){ try{ loadImage(); container=this.getContentPane(); container.setLayout(null); container.setBackground(newColor(168,193,227)); this.setIconImage(titleImage); setLeftPanel(); setSendPanel(); container.add(controlPanel); }catch(Exceptione){ System.out.println(e.getMessage()); } }5.3邮件配备界面实现点击主界面上方config按钮会弹出改配备框,通过该界面可以查看以及修改账户和服务器地址 图5.3邮件配备界面图某些实当代码:privatevoidaddUserName(){ userNameLabel=newJLabel("UserName:"); userNameLabel.setFont(newFont("黑体",Font.BOLD,14)); userNameLabel.setBounds(14,25,72,15); container.add(userNameLabel);userNameText=newJTextField(); userNameText.setBounds(92,20,180,25); container.add(userNameText); }5.4发送邮件界面实现填好收件人地址,主题,内容,抄送或添加附件,点击发送按钮,即会发送相应内容到对方邮箱。点击重置按钮所有内容会清空。图5.4发送邮件界面图某些实当代码:publicvoidaddButton(){ send=newJButton("发送"); send.setBounds(80,425,100,30); sendPanel.add(send); send.addActionListener(newActionListener(){ @Override publicvoidactionPerformed(ActionEvente){ booleantemp=check_Text(); if(temp){ send_Event(); } } }); JButtonreset=newJButton("重置"); reset.setBounds(300,425,100,30); sendPanel.add(reset); reset.addActionListener(newActionListener(){ @Override publicvoidactionPerformed(ActionEvente){ reset_Event(); } }); }5.5接受邮件界面实现点击收取邮件按钮就可收取该账户邮件,并按先后时间显示邮件列表。 图5.5接受邮件界面图某些实当代码:publicvoidinitTable(){ defaultTable=newMyTableModel(); addColumnName(defaultTable); table=newJTable(defaultTable); setTableAttr(); JScrollPanescrollPane=newJScrollPane(table); scrollPane.setBounds(5,25,475,400); receivePanel.add(scrollPane); defaultTable.addTableModelListener(newTableModelListener(){ @Override publicvoidtableChanged(TableModelEvente){ } }); table.addMouseListener(newMouseAdapter(){ @Override publicvoidmouseClicked(MouseEvente){ mouse_Event(e); } }); }第6章系统实现功能测试6.1登录邮箱测试 图6.1登录邮箱测试选取好服务器,然后输入相应账号和密码然后点击登录,则登录邮箱成功然后会进入到如上图所示主界面6.2发送邮件测试涉及发送文字和附件,以及抄送测试。抄送就是你写这封邮件能同步发给各种人,并且收件人懂得你把这封邮件同步发给了她和抄送栏里写邮件地址人。图6.2.1发送文字邮件测试图图6.2.2发送附件测试图图6.2.3抄送功能测试图6.3接受邮件测试点击收取邮件,就能达到邮件收取。图6.3接受邮件测试图6.4查看邮件内容测试双击要查看邮件后会显示出邮件内容图6.4查看邮件内容测试图6.5删除邮件测试先选取单个要删除邮件,也可同步选取各种要删除邮件,点击删除标记按钮,就能删除邮件,并由有关提示,提示删除邮件成功,显示出邮件删除后最新列表。图6.5.1删除单个邮件测试图图6.5.2删除各种邮件测试图下图是删除邮件成功提示图6.5.2删除邮件成功提示图图6.5.3邮件删除后新列表图第7章总结在本次毕业设计开发过程中,我遇到了许许多多困难,系统虽然基本完毕,但是也仍存在某些局限性,在这里只是简要论述某些重要困难和局限性之处。在开发邮件系统过程中,中文乱码也是一种比较棘手问题,由于乱码也许会在邮件标题,附件以及正文等诸多地方浮现,但是没有某一种办法可以解决所有乱码问题,因而解决乱码问题也是系统开发重点难点之一。通过一番上网查找和请教教师,终于找出导致乱码也许浮现因素,通过网上和教师予以拟采用解决途径,终于使乱码问题得到解决。此外,在邮件系统开发中如何解决各种类型信息成为了开发过程中又一种重点与难点,事实上,JavaMail底层在接受解决MIME数据方面依赖与JAF,JAF提供了对MIME数据进行解决部件,它通惯用于发送附件以及实现对MIME数据惯用操作。在开发过程中要编写东西诸多。并且由于自己刚接触,诸多都不熟悉,因此浮现问题解决速度很慢,对功能实现办法也比较少。本次毕业设计在诸多地方未能考虑周全以至于系统存在着诸多局限性之处,这些局限性重要是由于时间局限性导致,这就需要在后来系统维护过程中逐渐发现,并不断进行升级,均有待进一步改进。通过本次课程设计,对javamail也有某些感悟,感觉它真是一种神奇东西,里面富含那么多类,给人们带来了极大以便。一种人编写代码真是很容易浮现某些也许看不到小问题,从古至今人们的确从自己身上找问题比较难,因此说请教朋友和教师,注重叠作更有助于项目开发还值得一提,实践的确是学习同样新技术最快办法。理论固然要看,但是需要理论结合实践,在实践操作中深化对理论理解,这样才掌握得快。参照文献[1](美)埃史尔.Java编程思想(第四版).机械工业出版社.[2]Liang,Y.D.Java语言程序设计基本篇.机械工业出版社,[3]李金铭,林晓宇,宁正元.面向对象程序设计——Java.北京:北京交通大学出版社,[4]朱福喜著.Java项目设计与开发范例[M].北京:电子工业出版社,[5](美)NathanielT.Schutta,RyanAsleson著.Ajax与Java高档程序设计.邮电出版社,[6]O'Reilly&Associates,Inc《JavaCookbook》intheUnitedStatesorCanada[7]O’reilly,《JavaServletProgramming》,American:SernniYey[8]印雯,Java语言与面向对象程序设计.北京:清华大学出版,.

[9]毕广吉.Java程序设计实例教程[M].北京:冶金工业出版社,[10]张桂珠,刘丽,陈爱国Java面向对象程序设计(第2版)北京邮电大学出版社[11]刘腾红,孙细明.信息系统分析与设计[M].北京:科学出版社,致谢在教师和同窗支持与协助下,我顺利地完毕了本次毕业设计。通过这段时间毕业设计,本人受益非浅,对电子邮件系统有了更深刻理解,在此期间,我结识到自己局限性之处并争取独立完毕毕业设计,收获颇多,学到了此前诸多没有学到知识,同步也巩固了此前所学过知识。这次毕业设计是在邓泽林教师悉心指引下完毕,邓教师在整个毕业设计期间始终特别认真负责,经常积极联系咱们,询问咱们进度,协助咱们查找资料,在修改设计报告期间总是耐心为咱们查看报告内容和格式,不厌其烦指引咱们完善设计报告,达到最后规定。在我个人设计整个过程中,也予以我诸多意见和建议,协助我解决了诸多问题,使我真正理解了如何从整体上分析、设计该系统,邓教师严谨治学态度和认真负责给我留下了深刻印象,在此衷心对邓教师说声谢谢您。这次毕业设计也让我获益匪浅,让我明白应当以一种什么样心态去面对一种新知识领域,应当如何协调理论和详细实践之间关系。回顾大学学习期间日日夜夜,自己为有机会潜心研究,静心思考,并实现了邮件系统基本功能而感到非常欣慰。同步,我要向关怀与支持我教师和同窗们表达真诚感谢!她们在系统开发期间予以我热情协助和勉励,提出了许多宝贵意见,使我拓宽了视野,丰富了思路,获得了许多解决问题行之有效办法。感谢在设计中被我引用或参照论著作者。最后,再一次感谢在设计过程中协助和勉励我所有人。在后来学习和生活中我将更加努力,使自己独立工作能力得到进一步提高。附录:某些源程序代码packagecom.bes.mail.assist;importjava.io.*;importjava.text.*;importjava.util.*;importjavax.mail.*;importernet.*;/***有一封邮件就需要建立一种ReciveMail对象*/publicclassReceiveOneMail{ privateMimeMessagemimeMessage=null; privateStringsaveAttachPath="";//附件下载后存储目录 privateStringBufferbodytext=newStringBuffer();//存储邮件内容 privateStringdateformat="yy-MM-ddHH:mm";//默认日前显示格式 publicReceiveOneMail(MimeMessagemimeMessage){ this.mimeMessage=mimeMessage; } publicvoidsetMimeMessage(MimeMessagemimeMessage){ this.mimeMessage=mimeMessage; } /** *获得发件人地址和姓名 */ publicStringgetFrom()throwsException{ InternetAddressaddress[]=(InternetAddress[])mimeMessage.getFrom(); Stringfrom=address[0].getAddress(); if(from==null) from=""; Stringpersonal=address[0].getPersonal(); if(personal==null) personal=""; Stringfromaddr=personal+"<"+from+">"; returnfromaddr; } /** *获得邮件收件人,抄送,和密送地址和姓名,依照所传递参数不同"to"收件人"cc"抄送人地址"bcc"密送人地址 */ publicStringgetMailAddress(Stringtype)throwsException{ Stringmailaddr=""; Stringaddtype=type.toUpperCase(); InternetAddress[]address=null; if(addtype.equals("TO")||addtype.equals("CC") ||addtype.equals("BCC")){ if(addtype.equals("TO")){ address=(InternetAddress[])mimeMessage .getRecipients(Message.RecipientType.TO); }elseif(addtype.equals("CC")){ address=(InternetAddress[])mimeMessage .getRecipients(Message.RecipientType.CC); }else{ address=(InternetAddress[])mimeMessage .getRecipients(Message.RecipientType.BCC); } if(address!=null&&!address.equals("")){ for(inti=0;i<address.length;i++){ Stringemail=address[i].getAddress(); if(email==null) email=""; else{ email=MimeUtility.decodeText(email); } Stringpersonal=address[i].getPersonal(); if(personal==null) personal=""; else{ personal=MimeUtility.decodeText(personal); } Stringcompositeto=personal+"<"+email+">"; mailaddr+=","+compositeto; }// mailaddr=mailaddr.substring(1); } }else{ thrownewException("Erroremailaddrtype!"); } returnmailaddr; } /** *获得邮件主题 */ publicStringgetSubject()throwsMessagingException{ Stringsubject=""; try{ subject=MimeUtility.decodeText(mimeMessage.getSubject()); if(subject==null) subject=""; }catch(Exceptionexce){ } returnsubject; } /** *获得邮件发送日期 */ publicStringgetSentDate()throwsException{ Datesentdate=mimeMessage.getSentDate(); SimpleDateFormatformat=newSimpleDateFormat(dateformat); if(sentdate!=null){ returnformat.format(sentdate); } return""; } /** *获得邮件正文内容 * *@throwsException */ publicStringgetBodyText(Messagemessage){ try{ getMailContent((Part)message); }catch(Exceptione){ e.printStackTrace(); } returnbodytext.toString(); } /** *解析邮件,把得到邮件内容保存到一种StringBuffer对象中,解析邮件重要是依照MimeType类型不同执行不同操作,一步一步解析 */ publicvoidgetMailContent(Partpart)throwsException{ Stringcontenttype=part.getContentType(); intnameindex=contenttype.indexOf("name"); booleanconname=false; if(nameindex!=-1) conname=true; if(part.isMimeType("text/plain")&&!conname){ bodytext.append((String)part.getContent()); System.out.println((String)part.getContent()); }elseif(part.isMimeType("text/html")&&!conname){ bodytext.append((String)part.getContent()); } } /** *判断此邮件与否需要回执,如果需要回执返回"true",否则返回"false" */ publicbooleangetReplySign()throwsMessagingException{ booleanreplysign=false; Stringneedreply[]=mimeMessage .getHeader("Disposition-Notification-To"); if(needreply!=null){ replysign=true; } returnreplysign; } /** *获得此邮件Message-ID */ publicStringgetMessageId()throwsMessagingException{ returnmimeMessage.getMessageID(); } /** *【判断此邮件与否已读,如果未读返回返回false,反之返回true】 */ publicbooleanisNew()throwsMessagingException{ booleanisnew=false; Flagsflags=((Message)mimeMessage).getFlags(); Flags.Flag[]flag=flags.getSystemFlags(); System.out.println("flags'slength:"+flag.length); for(inti=0;i<flag.length;i++){ if(flag[i]==Flags.Flag.SEEN){ isnew=true; System.out.println("seenMessage"); break; } } returnisnew; } /** *判断此邮件与否包括附件 */ publicbooleanisContainAttach(Partpart)throwsException{ booleanattachflag=false; if(part.isMimeType("multipart/*")){ Multipartmp=(Multipart)part.getContent(); for(inti=0;i<mp.getCount();i++){ BodyPartmpart=mp.getBodyPart(i); Stringdisposition=mpart.getDisposition(); if((disposition!=null) &&((disposition.equals(Part.ATTACHMENT))||(disposition .equals(Part.INLINE)))) attachflag=true; elseif(mpart.isMimeType("multipart/*")){ attachflag=isContainAttach((Part)mpart); }else{ Stringcontype=mpart.getContentType(); if(contype.toLowerCase().indexOf("application")!=-1) attachflag=true; if(contype.toLowerCase().indexOf("name")!=-1) attachflag=true; } } }

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论