基于JAVA GUI的电子邮件客户端软件的设计与实现.doc

上传人:精*** 文档编号:831552 上传时间:2023-09-06 格式:DOC 页数:38 大小:509.67KB
下载 相关 举报
基于JAVA GUI的电子邮件客户端软件的设计与实现.doc_第1页
第1页 / 共38页
基于JAVA GUI的电子邮件客户端软件的设计与实现.doc_第2页
第2页 / 共38页
基于JAVA GUI的电子邮件客户端软件的设计与实现.doc_第3页
第3页 / 共38页
基于JAVA GUI的电子邮件客户端软件的设计与实现.doc_第4页
第4页 / 共38页
基于JAVA GUI的电子邮件客户端软件的设计与实现.doc_第5页
第5页 / 共38页
点击查看更多>>
资源描述

1、 摘 要本系统是用 java 语言实现的一个 Email客户端,主要用到 java GUI 图形界面设计和 java mail 工具包, 它适用于所有用户,无管理员设置,可以实现网络邮箱的邮件发送和邮件收取的基本功能,还具有通讯录的存储功能,针对用户的需求,本Email客户端具有以下两大模块:1基本设置模块;此模块主要包括用户设置和邮箱设置两大内容:1.1 用户设置:主要设置用户的一些基本信息,如用户名,用户密码等设置1.2 邮箱设置:主要设置邮箱服务器,SMTP,POP3等2.Email功能模块;此模块根据大众用户的需求划分了以下三个部分:2.1收取邮件功能;2.2发送邮件功能;2.3通讯录

2、功能;该系统的开发过程为:1.Email客户端的需求分析;2.Email客户端的系统分析;3.Email客户端的功能模块划分划分;4.Email客户端的数据库设计;5.Email客户端的界面设计;6.Email客户端的功能模块设计及代码实现关键字:java,java GUI,java mailAbstractThis email client system is developed in java language using java GUI and java mail tools .It can be used by any users who want to use it . The s

3、ystem is not including manager settings and it can finish the function of sending and accepting mails in web mail system, it can store user information a function like a address book in the web. The systems need to achieve the overall function to run two parts, as follows1. The basic settingsTwo par

4、ts are followed:1.1 Maintenance System Administrators basic information; 1.2 Student response functions; 2. Email functionsThree function will be available2.1 Sending mails2.2 Receiving mails2.3 Address bookThe system development process : 1. Email client needs analysis; 2. Email client system analy

5、sis; 3. Email client function modules partition; 4. Email client design; 5. Email client interface design; 6. Email client functional design and code modules to achieve Key word:java , java GUI ,java mail目 录38前 言7第1章 系统概述及系统分析81.1系统概述81.1.1基本设置模块81.1.2 Email功能模块81.2 需求分析91.3 可行性分析91.3.1技术可行性分析91.3.2

6、环境可行性分析91.3.3经济可行性分析9第2章 系统开发基本介绍102.1 选题背景与目的102 .2 系统开发工具102 .3 系统开发环境102 .4开发技术概述112 .4.1 J2EE概述112 .4.2 Java GUI112 .4.3 Java mail12第3章 系统总体设计133 .1 系统功能模块划分133 .2系统具体功能模块基本介绍143 .2.1 发件箱143 .2.2 收件箱143 .2.3 通讯录15第4章 系统详细设计及系统实现164 .1 章节内容总体介绍164 .2各模块功能详细设计164 .2.1 发送邮件功能的实现164 .2.1.1 发送普通邮件功能1

7、74 .2.1.2 邮件附件的功能实现224 .2.2 收取邮件功能的实现234 .2.3 通讯录功能的实现304 .2.4其他功能324 .2.4.1 其他界面实现与通讯录的连接功能324 .2.4.2 邮件未存储对用户提示功能324 .2.4.3 复制、删除邮件功能344 .2.4.4 用户信息设置功能35结束语38谢 辞39参考文献40前 言邮件系统是一套单独的系统,要有自己的服务器,在邮件系统中可以设多个域,每个域中可以设多个用户,比如说我买了anymacro或快客的邮件系统,可以进行多项设置.它的数据是放在自己的服务器上.随着信息技术的提高,网络的普及于发展,越来越多的网络工具随之产

8、生出来,网络邮箱就是其中之一,它可以通过网络来实现人们之间的通信,可以给人们的工作带来极大的方便,同时也缩短了人与人之间的距离,使人们在通信上需要花费的时间更短。该Email客户端不仅仅具有网络邮箱的功能,它可以让用户绑定多个邮箱,可以说是多个网络邮箱的公共接口,不进方便了人们的工作,还做到了有效利用网络的信息资源,极大的提高人们的工作效率,减少了很多的工作量。因此它应该是能够得到用户欢迎的一个系统。第1章 系统概述及系统分析1.1系统概述随着信息技术的提高,网络的普及于发展,越来越多的网络工具随之产生出来,网络邮箱就是其中之一,它可以通过网络来实现人们之间的通信,可以给人们的工作带来极大的方

9、便,同时也缩短了人与人之间的距离,使人们在通信上需要花费的时间更短。该Email客户端不仅仅具有网络邮箱的功能,它可以让用户绑定多个邮箱,可以说是多个网络邮箱的公共接口,不进方便了人们的工作,还做到了有效利用网络的信息资源,极大的提高人们的工作效率,减少了很多的工作量。该系统的功能模块主要由以下部分组成:1.1.1基本设置模块该模块可以完成此用户设置和邮箱设置两大内容,其中用户设置可以完成用户的一些基本信息的设置,包括用户名、用户密码、联系方式、邮政编码、通讯地址、邮箱地址,并可以对其进行存储、浏览、查看、删除、修改、打印等操作。邮箱设置可以完成对所使用邮箱的邮箱服务器、SMTP、POP3的一

10、些设置,也可以对这些设置进行存储、浏览、查看、删除、修改等操作。1.1.2 Email功能模块该模块可以完成网络邮箱的收取邮件、发送邮件、保存邮件的功能,并可以对这些邮件进行存储、转发、群发、浏览、删除、修改、打印等操作。此模块还具有通讯录的功能,可以存储其他网络邮箱用户的用户名和邮箱地址进行存储、修改等功能。1.2 需求分析 Email客户端的设计目的是要为了实现网络邮箱的邮件发送和收取的以些功能。为使用邮箱的用户提供便利。系统所面对的用户可以是任何普通用户,系统对于一个用户只允许以一种身份登录。用户登录后可以对系统进行管理,其主要操作是维护个人的基本信息,对其信息进行修改、存储等操作。将系

11、统需求加以总结,得出系统需求如下:l 系统可以运行任何操作系统平台上,并具有友好的用户界面。l 系统用户类型为:任何普通用户。1.3 可行性分析1.3.1技术可行性分析Java很有雄心的宣言writeonce,runanywhere许诺:一个具有下拉菜单,命令按钮,滚动条以及其他常见的GUI控件的应用程序将能够在各种操作系统上运行而不必重新编译成针对某一平台的二进制代码,包括MicrosoftWindows,SunsownSolaris,ApplesMacOS以及Linux。1.3.2环境可行性分析Java很有雄心的宣言writeonce,runanywhere许诺:一个具有下拉菜单,命令按钮

12、,滚动条以及其他常见的GUI控件的应用程序将能够在各种操作系统上运行而不必重新编译成针对某一平台的二进制代码,包括MicrosoftWindows,SunsownSolaris,ApplesMacOS以及Linux。也就是说本系统可以跨平台使用.1.3.3经济可行性分析开发此系统所用软件可在网络上下载使用。第2章 系统开发基本介绍2.1 选题背景与目的随着信息技术的提高,网络的普及于发展,越来越多的网络工具随之产生出来,网络邮箱就是其中之一,它可以通过网络来实现人们之间的通信,可以给人们的工作带来极大的方便,同时也缩短了人与人之间的距离,使人们在通信上需要花费的时间更短。该Email客户端不仅

13、仅具有网络邮箱的功能,它可以让用户绑定多个邮箱,可以说是多个网络邮箱的公共接口,不进方便了人们的工作,还做到了有效利用网络的信息资源,极大的提高人们的工作效率,减少了很多的工作量。正是因为该系统所具有的这些优点才开发了此系统。2 .2 系统开发工具本系统在开发过程中使用java GUI和java中java mail工具包实现了email的收发和一些基本的管理功能。2 .3 系统开发环境在软件环境方面,系统的开发环境如下:操作系统:S use Linux;开发平台:java;2 .4开发技术概述2 .4.1 J2EE概述J2EE是美国Sun公司刚刚推出的一种全新概念的模型,与传统的互联网应用程序

14、模型相比有着不可比拟的优势。目前,Java 2平台有3个版本,它们是适用于小型设备和智能卡的Java 2平台Micro版(Java 2 Platform Micro Edition,J2ME)、适用于桌面系统的Java 2平台标准版(Java 2 Platform Standard Edition,J2SE)、适用于创建服务器应用程序和服务的Java 2平台企业版(Java 2 Platform Enterprise Edition,J2EE)。J2EE是一种利用Java 2平台来简化企业解决方案的开发、部署和管理相关的复杂问题的体系结构。J2EE技术的基础就是核心Java平台或Java 2平

15、台的标准版,J2EE不仅巩固了标准版中的许多优点,例如编写一次、随处运行的特性、方便存取数据库的JDBC(Java DataBase Connectivity)应用程序接口(API, Application Program Interface)技术以及能够在Internet应用中保护数据的安全模式等等,同时还提供了对 EJB(Enterprise JavaBeans)、Java Servlets API、JSP(Java Server Pages)以及XML技术的全面支持。其最终目的就是成为一个能够使企业开发者大幅缩短投放市场时间的体系结构。2 .4.2 Java GUI当Java在1995年

16、的春天第一次发布的时候,它包含了一个叫AWT(AbstractWindowingToolkit)的库,用来构建图形用户界面应用程序。Java很有雄心的宣言writeonce,runanywhere许诺:一个具有下拉菜单,命令按钮,滚动条以及其他常见的GUI控件的应用程序将能够在各种操作系统上运行而不必重新编译成针对某一平台的二进制代码,包括MicrosoftWindows,SunsownSolaris,ApplesMacOS以及Linux。为了方便用Java构建图形用户界面,Sun最初提供了一个在所有平台下具有的独特Java外观的图形界面库。Sun在applet技术策略方面的首要伙伴Netsc

17、ape提出applets应该维持和运行时平台一样的外观。他们希望applets在某一平台下在显示和行为上能够像其他应用程序一样。为了实现Netscape的本地外观的目标,在JDK的第一个发布版中包含了AWT这个库。AWT的缺省实现使用了对等机制,即每一个JavaGUI窗口部件都在底层的窗口系统中有一个对应的组件。例如,每一个java.awt.Button对象将在底层窗口系统中创建一个唯一对应的button。当用户点击那个按钮的时候,事件将从本地实现库传送到Java虚拟机里,并且最终传送到与java.awt.Button对象相关联的逻辑。对等系统的实现以及Java组件与对等组件之间的交流的实现都

18、隐藏在底层JVM实现中,Java语言级的代码仍然跨平台。于1997年JavaOne大会上提出并在1998年5月发布的JFC(JavaFoundationClasses)包含了一个新的使用Java窗口开发包。这个新的GUI组件叫做Swing,感觉到它是对AWT的升级,并且看起来对Java占据计算机世界很有帮助。尽管Swing仅仅是这个新组件的指代名称,它一直持续使用到今天。可能是因为这个名称太贴切了,Swing尝试着以以下几种方式改变公认的观点:AWT依赖对等架构,用Java代码包装本地窗口部件,Swing却根本不使用本地代码和本地窗口部件AWT把绘制屏幕交给本地窗口部件,Swing自己的组件绘

19、制自己,因为Swing不依赖本地窗口部件,它可以抛弃AWT的最小公分母的方法并在每个平台下实现每个窗口部件,从而创建一个比AWT更强大的开发工具包从最开始Java就提供了构建跨平台的窗口GUI应用程序库,从AWT,Swing到现在的SWT和JFace。最初的工具包能力微弱,但是后来提供的工具包认识到之前工具包的缺点并取得了巨大的进步。SWT和JFace不仅使Java成为一个构建桌面应用程序的可行的选择,也使之成为一个具有优势的开发平台。尽管过去对得到轻便和强大的Java系统的尝试必然意味着接受它在GUI方面的缺点,如今这个不足已经不存在了,Java终于可以统领它在桌面计算应用方面的位置了。2

20、.4.3 Java mail想将邮件工具结合到您独立于平台的 Java 解决方案中吗?再没有比 JavaMail API 更合适的了,它提供了个独立于协议的模块,能用于 IMAP、POP、SMTP、MIME 和其它涉及因特网的消息传递协议。现在,有了 JavaBeans Activation Framework (JAF)的支持,您的应用程序经由 JavaMail API 就能启用邮件功能啦。第3章 系统总体设计3 .1 系统功能模块划分模块分析是描述系统需求的一个过程,需要将需求分析中的感性描述进行抽象,提取出要实现的功能,这是整个系统开发的一个关键过程。模块分析的第一步,是描述Email客

21、户端的功能,以此确定系统的功能需求。本Email 客户端对任何一个用户都是普通用户,无管理员设置,对每一个用户都具有普通邮箱所具有的收取、发送邮件的功能,因此根据用户操作需求,将系统划分为如下功能,并对其模块的划分和功能进行描述.整个系统的模块结构如图3.1所示,此图将Email客户端划分为三大模块,这些模块又是由若干个子模块构成的,形成一个结构紧凑功能明确完整,子模块的划分见3.2 系统具体功能模块的基本介绍。 Email客户端收件箱发件箱通讯录图3.13 .2系统具体功能模块基本介绍本部分主要介绍Email客户端的一些基本功能,主要描述了收件箱、发件箱、和通讯录所具有的功能,详细设计见第4

22、章内容。3 .2.1 发件箱发件箱可以通过用户设置发送用户所需要的邮件信息,本页面可以实现查看已保存邮件信息、重发已发邮件、转发所收邮件、邮件标记、编辑邮件、新建邮件、删除邮件和打印邮件、发送,抄送、密送、发送附件、存储邮件、未存储提示等功能,具体功能图如图3.2.1发件箱发送已存邮件查看保存邮件新建邮件重发邮件打印邮件删除邮件存储邮件编辑邮件图3.2.13 .2.2 收件箱收件箱可以通过用户设置收取用户所需要的邮件信息,本页面可以实现查看所收取的邮件信息、转发邮件、群发邮件、邮件标记(标记已读和未读)、编辑和存储邮件、删除邮件和打印邮件等功能,具体功能图如图3.2.2收件箱查看邮件转发邮件群

23、转发邮件邮件标记打印邮件删除邮件存储邮件编辑邮件图3.2.23 .2.3 通讯录通讯录可以存储用户的好友信息,可以方便用户完成对邮件信息的发送,尤其是转发和群组发送功能,通讯录的存在在很大程度上方便了使用系统的用户。本通讯录可以实现查看好友、增加好友、删除好友、编辑好友信息、删除好友信息等功能,本系统还可以建立多个通讯录,每个通讯录都可以对所存用户进行分组,以便方便邮件的发送,存储通讯录的文件还可以转存,即修改当前通讯录的存放位置,其基本功能图如图3.2.3通讯录编辑通讯录文件增加新通讯录编辑好友信息查看好友增加好有删除好友删除好友删除通讯录图3.2.3第4章 系统详细设计及系统实现4 .1

24、章节内容总体介绍系统分析完成后,进入系统的设计阶段这是整个系统实现过程中非常重要的一个阶段。本章节描述了系统设计的详细过程和内容及实现过程。4 .2各模块功能详细设计4 .2.1 发送邮件功能的实现4 .2.1.1 发送普通邮件功能实现此功能需要引入java mail 工具包中的以下包import javax.mail.*;import javax.mail.internet.*;构造sendMail类的主要代码如下public class sendMail private String SMTP,mailFrom,mailTo,mailCC,mailTitle,mailBody,mailEn

25、code;private String userName,userPass;private Object attachFileList;private boolean isAuthentic = false;public sendMail()/初始化参数代码段 this.SMTP = ; this.mailFrom =; this.mailTo = ; this.mailCC = ; this.mailTitle = ; this.mailBody = ; this.mailEncode = BIG5;/为用户提供参数设置接口/在本系统中通过以下方法实现对用户写入的信息加以传递public v

26、oid setFrom(String from)this.mailFrom = from;public void setTo(String to)this.mailTo = to;public void setCC(String cc)this.mailCC = cc;public void setBody(String body)this.mailBody = body;public void setTitle(String title)this.mailTitle = title;public void setSMTP(String smtp)this.SMTP = smtp;public

27、 void setUserName(String userName)this.userName = userName;public void setPassword(String pass)this.userPass = pass;public void setAttachFile(Object fileListAry)this.attachFileList = fileListAry;/设置文字编码代码如下public void setEncode(String encode)this.mailEncode = encode;public int send(boolean hasSMTPAu

28、th) this.isAuthentic = hasSMTPAuth;/检查参数是否安全 if(!checkParameters(isAuthentic) return 1; else Properties prop = new Properties();/设定SMTP Server prop.put(mail.smtp.host,this.SMTP); Session mailConn = Session.getDefaultInstance(prop,null); Message msg = new MimeMessage(mailConn);try msg.setHeader(Conte

29、nt-Transfer-Encoding,this.mailEncode); reEncode(); /设置邮件的地址和邮件的编码 msg.setFrom(new InternetAddress(this.mailFrom); /Set reciever e-mail address and nickname msg.setRecipient(Message.RecipientType.TO, new InternetAddress(this.mailTo); if(this.mailCC.trim().length()!=0) msg.setRecipient(Message.Recipie

30、ntType.CC, new InternetAddress(this.mailCC); /设定信件标题 if(this.mailTitle.trim().length()=0) msg.setSubject(无标题信件); else msg.setSubject(this.mailTitle); Multipart mp = new MimeMultipart(); MimeBodyPart mbpBody = new MimeBodyPart(); mbpBody.setContent(this.mailBody+ this.mailEncode); MimeBodyPart mbpFil

31、e; for(int i=0;iattachFileList.length;i+) String fullPath = this.toBIG5(attachFileListi.toString(); mbpFile = new MimeBodyPart(); FileDataSource fds = new FileDataSource(fullPath); mbpFile.setDataHandler(new DataHandler(fds); mbpFile.setFileName(fds.getName(); mp.addBodyPart(mbpFile); mp.addBodyPart

32、(mbpBody); /將內容加入 msg.setContent(mp); if(isAuthentic) /送信 prop.put(mail.smtp.auth,isAuthentic); Transport trans = mailConn.getTransport(smtp); try trans.connect(this.SMTP,this.userName,this.userPass); trans.sendMessage(msg,msg.getAllRecipients(); return 0; catch(Exception ex) ex.printStackTrace(); r

33、eturn 2; finally trans.close(); else try Transport.send(msg); return 0; catch(SendFailedException ex) System.out.println(ex.toString(); return 3; catch(Exception ex) ex.printStackTrace(); return 4; private boolean checkParameters(boolean hasSMTPAuth) if(SMTP.trim().length()=0 | mailFrom.trim().lengt

34、h()=0 | mailTo.trim().length()=0) return false; else if(hasSMTPAuth) if(this.userName.trim().length()=0) return false; else return true; else return true; private void reEncode() if(this.mailEncode.toUpperCase()=BIG5) this.mailFrom = toBIG5(mailFrom); this.mailTo = toBIG5(mailTo); this.mailTitle = t

35、oBIG5(mailTitle); this.mailBody = toBIG5(mailBody); else if(this.mailEncode.toUpperCase()=UTF8) this.mailFrom = toUTF8(mailFrom); this.mailTo = toUTF8(mailTo); this.mailTitle = toUTF8(mailTitle); this.mailBody = toUTF8(mailBody); private String toUTF8(String str) try str = MimeUtility.encodeText(str

36、,UTF-8, B); return str; catch (Exception ex) return str; 图4.2.1.1 新建邮件要发送邮件之需要使用已经建好的sendMail类即可,功能代码如下:sendMail mail=new sendmail();mail.setMailTo(*);mail.setMailFrom(*);mailsend();4 .2.1.2 邮件附件的功能实现此功能实现代码如下:public class AttachExample public static void main (String args) throws Exception String h

37、ost = args0; String from = args1; String to = args2; String fileAttachment = args3;/ 获得系统参数 Properties props = System.getProperties();/设置邮件的服务器 props.put(mail.smtp.host, host); / 获得Session Session session = Session.getInstance(props, null); MimeMessage message = new MimeMessage(session); / Define me

38、ssage message.setFrom(new InternetAddress(from); message.addRecipient(Message.RecipientType.TO,new InternetAddress(to); message.setSubject(Hello JavaMail Attachment); MimeBodyPart messageBodyPart =new MimeBodyPart();/ create the message part messageBodyPart.setText(Hi);/fill message Multipart multip

39、art = new MimeMultipart(); multipart.addBodyPart(messageBodyPart); / Part two is attachment messageBodyPart = new MimeBodyPart(); DataSource source = new FileDataSource(fileAttachment); messageBodyPart.setDataHandler(new DataHandler(source); messageBodyPart.setFileName(fileAttachment); multipart.add

40、BodyPart(messageBodyPart); / 将多个附件加入信件中 message.setContent(multipart); / 发送带附件的邮件,此功能代码结束 Transport.send( message ); 4 .2.2 收取邮件功能的实现邮件的收取可以使用java Mail API的方法,主要的操作过程为:获取javax.mail.Session实例,并进而获得javax.mail.Store实例。利用javax.mail.Store实例获得缺省收件箱(INBOX)javax.mail.Folder实例。使用javax.mail.Folder对象提取新邮件,存储为j

41、avax.mail.Message对象数组。创建javax.mail.FetchProfile以(潜在地)优化对特定邮件组成成分的提取。这里的javax.mail.FetchProfile类提供邮件协议提供者可选参数,其目的是更有效地实现邮件组成成分的预提取此功能的主要代码如下:String pers = null;String addr = null;if(a instanceof InternetAddress &(pers=(InternetAddress)a).getPersonal()!=null)addr=pers+ +;elseaddr = a.toString();return addr;Session mailse

展开阅读全文
相关资源
相关搜索
资源标签

当前位置:首页 > 学术论文 > 毕业设计

版权声明:以上文章中所选用的图片及文字来源于网络以及用户投稿,由于未联系到知识产权人或未发现有关知识产权的登记,如有知识产权人并不愿意我们使用,如有侵权请立即联系:2622162128@qq.com ,我们立即下架或删除。

Copyright© 2022-2024 www.wodocx.com ,All Rights Reserved |陕ICP备19002583号-1 

陕公网安备 61072602000132号     违法和不良信息举报:0916-4228922