




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、邮件管理系统的设计与实现指导老师: 学生姓名: 摘要 电子邮件的使用简易,投递迅速,收费低廉,易于保存,全球畅通无阻,使得电子邮件被广泛地应用,当前流行的各大邮件系统除了最主要的收发信件之外,功能越来越复杂,但是人们平常真正用到的功能很少,很多功能尤其对于那些计算机知识相对缺乏的人来说,更见显得太过于华丽而不太实用。有鉴于此,开发一个集收、发、管理为一体的功能相对简单实用的电子邮件系统可以大大方便我们对邮件的收发和管理。基于C/S架构的邮件管理系统以SQL Server 2005数据库,使用.NET技术开发而成。是一款融合了邮件发送、邮件接收、个人邮件管理等功能的计算机软件系统。其中邮件发送和
2、接收是系统的两大特色,用户可以发送指定帐户的邮件,并且可以接收到指定帐户上的邮件,这些帐户都是用户可以在本邮件管理系统中设置的,同时,还可以将自己发送的邮件保存到发件箱供以后查看。本论文以软件工程理论为指导,论述了系统的设计构想,分析了系统开发各个阶段的主要任务,并详细阐述了系统各个功能模块的实现原理及解决方案。是对系统开发过程的详细说明与总结。关键词 邮件客户端;.NET技术;SQL Server 2005;SMTP;POP3 Design and Implement of E-Mail Client SystemAbstract Email has been increasingly po
3、pular these days since it is simple, instantaneous, globally used, cheap and easy to save. The current mainstream email systems embrace more and more complicated functions, far beyond the basics like sending and receiving mails. However, people do not really use all these fancy and impractical funct
4、ions, especially for those who know few about computers. Therefore, it would be of great users convenience to develop a simple, practical and user-friendly email system, which integrates sending and receiving functions with email management.The Web based internet email system, which uses the SQL Ser
5、ver 2005 database and is developed by .NET technology, is one computer software system that combines sending and receiving emails with personal emails management. Its main features include sending and replying emails. Users can send and receive mails of pre-setting mail accounts, and save and view t
6、he sent emails later. The present paper, with software engineering theory as guidance, discussed the system design concept and analysis the main task of the various stages of system development and introduced the system principle and solutions of the various functional modules. The paper summarized
7、the system development process.Key Words Email Client;.NET technology;SQL Server 2005;SMTP;POP335 / 40文档可自由编辑打印目 录1 序言11.1 电子邮件介绍11.2 开发背景和意义21.3 开发及运行环境21.3.1 开发环境21.3.2 运行环境22 相关技术和SMTP协议32.1 .NET框架简介32.2 ADO.NET概述52.3 C#开发语言介绍82.4 SMTP协议介绍92.4.1 SMTP协议简介及工作原理92.4.2 SMTP模型103需求分析与功能设计113.1 功能需求分析1
8、13.2 性能需求分析124 总体设计134.1 软件模块结构设计134.2 软件架构设计134.3 数据库结构设计144.3.1数据库概念结构设计(E-R图)144.3.2数据库逻辑结构设计155 详细设计175.1 系统用例图175.2 系统登录界面模块185.3 系统主界面模块205.4 新建邮件帐户模块215.5 系统发送邮件界面模块235.6 系统接收邮件模块265.7 系统发件箱邮件模块285.8 数据库操作模块296 系统测试326.1 同一SMTP服务器发送邮件的测试326.1.1 同一服务器,发送一封纯文本邮件的测试326.1.2 同一服务器,发送一封带附件的邮件的测试326
9、.2 利用不同的SMTP服务器发送邮件的测试337结 论348参考文献359致 谢361 序言1.1 电子邮件介绍电子邮件(简称E-mai1)又称电子信箱、电子邮政,它是种用电子手段提供信息交换的通信方式。它是全球多种网络上使用最普遍的一项服务。这种非交互式的通信,加速了信息的交流及数据传送,它是个简易、快速的方法。通过连接全世界的Internet,实现各类信号的传送、接收、存贮等处理,将邮件送到世界的各个角落。到目前为止,可以说电子邮件是Internet资源使用最多的一种服务,E-mai1不只局限于信件的传递,还可用来传递文件、声音及图形、图像等不同类型的信息。电子邮件不是一种“终端到终端”
10、的服务,是被称为“存贮转发式”服务。这正是电子信箱系统的核心,利用存贮转发可进行非实时通信,属异步通信方式。即信件发送者可随时随地发送邮件,不要求接收者同时在场,即使对方现在不在,仍可将邮件立刻送到对方的信箱内,且存储在对方的电子邮箱中。接收者可在他认为方便的时候读取信件,不受时空限制。在这里,“发送”邮件意味着将邮件放到收件人的信箱中,而“接收”邮件则意味着从自己的信箱中读取信件,信箱实际上是由文件管理系统支持的个实体。因为电子邮件是通过邮件服务器(mai1 server)来传递档的。通常mail server是执行多任务操作系统UNIX的计算机,它提供24小时的电子邮件服务,用户只要向 m
11、ail server管理人员申请个信箱账号,就可使用这项快速的邮件服务。电子邮件的工作原理:1) 电子邮件系统是一种新型的信息系统,是通信技术和计算机技术结合的产物。 电子邮件的传输是通过电子邮件简单传输协议(Simple Mail Transfer Protocol,简称SMTP)这一系统软件来完成的,它是Internet下的一种电子邮件通信协议。 2) 电子邮件的基本原理,是在通信网上设立“电子信箱系统”,它实际上是一个计算机系统。系统的硬件是一个高性能、大容量的计算机。硬盘作为信箱的存储介质,在硬盘上为用户分一定的存储空间作为用户的“信箱”,每位用户都有属于自己的个电子信箱。并确定个用户
12、名和用户可以自己随意修改的口令。存储空间包含存放所收信件、编辑信件以及信件存盘三部分空间,用户使用口令开启自己的信箱,并进行发信、读信、编辑、转发、存档等各种操作。系统功能主要由软件实现。3) 电子邮件的通信是在信箱之间进行的。用户首先开启自己的信箱,然后通过键入命令的方式将需要发送的邮件发到对方的信箱中。邮件在信箱之间进行传递和交换,也可以与另个邮件系统进行传递和交换。收方在取信时,使用特定账号从信箱提取。1.2 开发背景和意义当前流行的各大邮件客户端软件的除了最主要的收发信件之外,功能越来越复杂,但是人们平常真正用到的功能很少,很多功能尤其对于那些计算机知识相对缺乏的人来说,更加显得太过于
13、华丽而不太实用。有鉴于此,在了解RFC底层协议的基础上,我们开发了这个各种功能相对简单实用的邮件客户端程序,简化了很多不必要的功能。1.3 开发及运行环境1.3.1 开发环境AMD Athlon(TM),2G内存,320G硬盘Microsoft® Windows XP ProfessionalMicrosoft® Visual Studio 2008(C Sharp)Microsoft® Developer Server for Visual Studio 20081.3.2 运行环境Intel® Pentium® 4及以上处理器,1024M以
14、上内存,120G以上硬盘Microsoft® Windows XP以上操作系统1024*768或以上的屏幕分辨率确保机器上安装有.Net FrameWork 2.0或者以上版本2 相关技术和SMTP协议2.1 .NET框架简介2000年6月22日,不论对Microsoft还是整个IT业界都将成为值得纪念的一天。这一天,微软公司正式推出了其下一代计算计划Microsoft.Net(简称.Net)。这项计划将使微软现有的软件在Web时代不仅适用传统的PC,而且也能够满足目前呈强劲增长势头的新设备,诸如蜂窝电话以及个人数字助理等的需要。微软还计划通过创建新的工具来吸引软件开发人员和合作伙伴
15、对Microsoft.Net的认同,并且开发出其他基于Internet的服务。那么,究竟什么是.Net?.Net首先是一个开发平台,它定义了一种公用语言子集(Common Language Subset,CLS),这是一种为符合其规范的语言与类库之间提供无缝集成的混合语。.Net统一了编程库,提供了对下一代网络通信标准,可扩展标记语言(Extensible Makeup Language,XML)的完全支持,使应用程序开发变得更容易、更简单。Microsoft.Net计划还将实现人机交互方面的革命,微软将在其软件中添加手写和语音识别的功能,让人们能够与计算机进行更好的交流,并在此基础上继续扩展
16、功能,增加对各种用户终端的支持能力。最为重要的,.Net将改变因特网和行为方式:软件变为服务。与Microsoft的其它产品一样,.Net与Windows平台紧密集成,并且与其它微软产品相比更进一步:由于其运行库已经与操作系统整合在了一起,从广义上把它称为一个运行库也不为过。简而言之,.Net是一种面向网络、支持各种用户终端的开发平台环境。微软的宏伟目标是让Microsoft.Net彻底改变软件的开发方式、发行方式、使用方式等等,并且不只针对微软一家,而是面向所有的开发商与运营商!.Net的核心内容就是搭建第三代因特网平台,这个网络平台将解决网站之间的协同合作问题,从而最大限度地获取信息。在.
17、Net平台上,不同网站之间通过相关的协定联系在一起,网站之间形成自动交流,协同工作,提供最全面的服务。.NET体系结构的一个主要组件是Web服务,它是通过Internet向客户端开放其功能的应用程序。客户端和其他应用程序可以将这些Web服务作为可重用的构件块。Web服务的一个示例是Dollar汽车租赁公司的预订系统,该系统称为Quick Keys1。Dollar公司希望开放其基于大型系统的功能,这样其他公司就能向客户提供汽车租赁的预订服务。Dollar公司本来可以为其合作伙伴创建了单独的专用解决方案。为了以可重用的方式开放其功能,Dollar公司用Web服务来实现其解决方案。通过新创建的Web
18、服务,航空公司和酒店能够使用Dollar公司的预订系统来为它们的客户预订汽车。Dollar公司的业务伙伴既不需要使用与Dollar公司相同的平台,也不需要知道预订系统是如何实现的。把应用程序重新实现为Web服务为Dollar公司带来了数百万美元的额外收入和成千上万的新客户。从技术层面上,.NET的开发架构如下:Web服务扩展了软件重用的概念。程序员不必实现每一个应用程序的每一个组件,而只需将注意力放在自己所开发的这一部分上。相反,公司可以购买Web服务,从而将时间和精力放在产品开发上。面向对象的程序设计方法已经很流行,因为它能让程序员利用预先包装好的组件方便地创建应用程序。同样,程序员可以利用
19、Web服务为数据库、安全性、身份验证、数据存储和语言翻译创建应用程序,而无需知道这些组件的内部细节。图2.1.NET开发架构当公司通过Web服务链接它们的产品时,这时就出现了一种新的用户体验。例如,通过利用多个公司的Web服务,一个单独的应用程序就能同时管理账单支付、税金退还、贷款和投资。一个在线商人可以购买用于在线信用卡付款、用户身份验证、网络安全和库存数据库的Web服务来建立一个电子商务Web站点。这种互动的关键是XML和SOAP,它们可使Web服务能够相互通信。XML对数据进行标识,而SOAP则是Web服务之间得以方便通信的协议。XML和SOAP就像“胶水”一样将各种Web服务组合在一起
20、构成各种应用程序。通用数据访问(Universal data access)是.NET的另外一个基本概念。如果一个文件有两份副本(例如,一份在个人的计算机上,另一份则在公司的计算机上),旧版本必须经常更新,这称为文件同步。如果两个文件不同,那么它们就不同步。这种状态容易导致错误。我们可利用.NET将数据存放在中间位置,而不是存放在各个分离的系统上。任何连接到Internet上的设备都可以访问这些数据(当然要在严格的控制之下)。为了在这些访问设备上能正确使用和显示,这些数据可以重新编排格式。因此,同样一个文件可以在台式机、PDA、无绳电话或其他设备上进行浏览和编辑。用户不必对信息进行同步,因为中
21、间位置的信息会及时更新。2.2 ADO.NET概述ADO.NET提供对Microsoft SQL Server等数据源及通过Ole DB和XML公开的数据源的一致访问。数据共享应用程序可以使用ADO.NET来连接到这些数据源,并检索、操作和更新数据。ADO.NET能够有效地从数据操作中将数据访问分解为多个可以单独或一前一后使用的不连续组件,它包含用于连接到数据库、执行命令和检索结果的.NET数据提供程序。可以直接处理检索到的结果,或将其放入ADO.NET DataSet对象,以与来自多个源的数据或在层之间进行远程处理的数据组合在一起并以特殊方式向用户公开。ADO.NET DataSet对象也可
22、以独立于.NET数据提供程序使用,以管理应用程序本地的数据或源自XML的数据。ADO.NET类在System.Data.Dll中,并且与System.Xml.Dll中的XML类集成。当编译使用System.Data命名空间的代码时,将引用System.Data.Dll和System.Xml.Dll。2.2.1 ADO.NET的设计目标随着应用程序开发的发展演变,新的应用程序已基于Web应用程序模型越来越松散地耦合。如今,越来越多的应用程序使用XML来编码要通过网络连接传递的数据。Web应用程序将HTTP用做在层间进行通信的结构,因此它们必须显式处理请求之间的状态维护。这一新模型大大不同于连接且
23、紧耦合的编程模式,此模式曾是客户端/服务器时代的标志。在此编程下,连接会在程序的整个生存期中保持打开,而不需要对状态进行特殊处理。在设计符合当今开发人员需要的工具和技术时,Microsoft认识到需要为数据访问提供全新的编程模型,此模型是基于.NET框架生成的。基于此将确保数据访问技术的一致性,即组件将共享通用的类型系统、设计模式和命名约定。设计ADO.NET的目的是为了满足这一新编程模型的以下需要:断开式数据结构、与XML的紧密集成、能够组合来自多个不同数据源的数据的通用数据表示形式,以及为与数据库交互而优化的功能,它们都是.NET框架固有的。ADO.NET具有以下设计目标。利用当前的ADO
24、知识ADO.NET的设计满足了当今应用程序开发模型的多种要求,同时该模型尽可能地与ADO保持一致,这使当今的开发人员不必从头开始学习全新的数据访问技术。ADO.NET与ADO共存。虽然大多数基于.NET的新应用程序将使用ADO.NET来编写,但.NET开发人员仍然可以通过.NET COM互操作性服务来使用ADO。支持N层编程模式ADO.NET为断开式多层编程环境提供了高级的支持,许多新的应用程序都是为该环境编写的。使用断开式数据集(DataSet)这一概念已成为编程模型中的焦点。多层编程的ADO.NET解决方案是数据集(DataSet)。集成XML支持XML和数据访问紧密联系在一起,其全部内容
25、都是有关数据编码的,而数据访问越来越多的内容都与XML有关。.NET框架不仅支持,而且完全基于Web标准生成。XML支持内置在ADO.NET中非常基本的级别上。.NET框架和Ado.NET中的XML类是同一结构的一部分,它们在许多不同的级别集成。用户不必在数据访问服务集及其XML副本之间进行选择,它们的设计本来就具有从其中一个跨越到另一个的功能。2.2.2 ADO.NET体系结构传统地认为,数据处理首先依赖一个连接的两层模型。当数据处理越来越多地乃至多层体系结构,设计者转向为其应用程序试图提供更好的可扩展性。XML和ADO.NETADO.NET平衡XML提供不连续访问数据的能力。在.NET框架
26、中,ADO.NET是和XML都是同一个体系结构的成分,在DataSet对象中聚合。该对象能够用从XML的数据组装,如同是一个文件或是一个XML的分支。DataSet可以被写为全球广字段网以适应XML,包括其计划也和XML计划定义语言一样计划,忽略来自DataSet中的数据。因为DataSet的固有长篇连载格式是XML的,所以是对于在层之间移动数据的一个很好的中介,可使DataSet成为移动数据及从XML网络服务上计划和移出内容的最佳选择。DataSet还能够和XmlDataDocument保持同步实时相关的和分等级的数据入口。ADO.NET组成部分ADO.NET组成部分被设计为从数据处理代理数
27、据入口,有两个核心组件能够实现:DataSet和.NET数据提供程序,包括Connection、Command、DataReader和DataAdapter对象的一系列组件。ADO.NET DataSet是ADO.NET的不连贯的体系结构中的核心部分。DataSet是明确地为数据访问独立于任何数据源而设计的,结果可以和多重不同数据源以及和XML数据一起被使用,或者被用来管理应用程序局部的数据。DataSet包含一个或更多的DataTable对象的收集器,由行和列的数据构成,以及源密码和外来密码,即关于DataTable对象中数据的约束和关系信息。ADO.NET体系结构另外一个核心元素是.NET
28、数据提供程序,其组件明确地为数据处理和快速、向前、吟诗访问数据而设计。Connection对象提供和数据源的连通性,可使访问数据库命令返回数据,修改数据,运行已有的程序,然后发送或重新获取参数信息。DataReader从数据源提供一个高性能的数据分支,最后DataAdapter在DataSet和数据源之间提供一个桥梁。DataAdapter用Command对象执行在数据源中的SQL命令,以对DataSet装载数据及调用DataSet中的数据变化使之返回数据源。可以为任何数据源编写数据供给者。.NET框架装载SQL Server.NET数据提供程序和OLE DB.NET数据提供程序。在层和用户之
29、间细化及整理数据DataSet的设计使用户能够容易地用XML Web服务通过网络将数据传送给用户,允许用户用.NET远程服务在.NET之间整理数据。选择一个DataReader或一个DataSet。和数据交互,如和Windows窗体控制粘和在一起或从多重数据源组合及关联数据。在应用程序中局部隐藏数据。提供相关联数据的分等级XML视图和在数据库用像XSL转换或XML路径语言(XPath)查询等工具。在不需要一个向数据源的开放连接下,执行广泛的处理。该开放的连接可以为其他用户随意使用。如果不需要由DataSet提供的功能函数,可以通过用DataReader返回以向前只读模型的数据改善操作性能。尽管
30、DataAdapter用DataReader填充DataSet的内容,但因为存储有DataSet用的内存空间,以及需要的创建处理和填充DataSet,通过用DataReader能够获取执行结果。2.3 C#开发语言介绍在最近一段时间里,C和C+一直是最有生命力的程序设计语言。这两种语言为程序员提供了丰富的功能,高度的灵活性和强大的底层控制能力。而这一切都不得不在效率上做出不同程度的牺牲。如果使用过包括C和C+在内的多种程序设计语言的人,相信会深刻体会到它们之间的区别。比如,与Visual Basic相比,Visual C+程序员为实现同样的功能就要花费更长的开发周期。由于C和C+即为我们带来了
31、高度的灵活性,又使我们必须要忍受学习的艰苦和开发的长期性,许多C和C+程序员一直在寻求一种新的语言,以图在开发能力和效率之间取得更好的平衡。针对该问题,微软的解决方案是一种称之为C#的程序语言。C#是一种现代的面向对象的程序开发语言,它使得程序员能够在新的微软.Net平台上快速开发种类丰富的应用程序。.Net平台提供了大量的工具和服务,能够最大限度的发掘和使用计算及通信能力。由于其一流的面向对象的设计,从构建组件形式的高层商业对象到构造系统级应用程序,你都会发现C#是最作乱的选择。使用C#语言设计的组件能够用于Web服务,这样通过Internet,可以被运行于任何操作系统上任何编程语言所调用。
32、C#带来对应用程序的快速开发能力的同时,并没有牺牲C与C+程序员所关心的各种特性。它忠实地继承了C和C+的优点。如果对C与C+有所了解,你会发现它是那样的熟悉。即使是一位新手,C#也不会给你带来任何其它的麻烦,快速应用程序开发的思想与简洁的语法将会使你迅速成为一名熟练的开发人员。C#是专门为.Net应用而开发出的语言。这从根本上保证了C#与.Net框架的完美结合。在.Net运行库的支持下,.Net框架的各种优点在C#中表现得淋漓尽致。让我们先来看看C#的一些突出的特点:简洁的语法精心地面向对象设计与Web的紧密结合完整的安全性与错误处理版本处理技术灵活性与兼容性C#的显著优点是它通过Syste
33、m名称空间提供了一组有效的数据类型。不必链接任何独立的头文件,就可以处理财政数字、字符串值和Boolean值等各种类型。而且,由于这些类型都是真类,而不仅仅是基本类型,所以每种类型都有转换和格式化输出的有效静态方法。为避免错误,C#类型是“强类型化的”,即某些数据类型之间的转换需要显式请求。在C+中,一个整数可以隐式地解释为Boolean的值。在C#中就不能这样。整数必须显式地转换为Boolean数据类型的值,才能以这种方式来解释。2.4 SMTP协议介绍由于要开发的是邮件客户端程序,就不得不用到SMTP协议和POP协议。接下来简单介绍一下SMTP协议,POP3协议请读者自行参考相关文档。2.
34、4.1 SMTP协议简介及工作原理简单邮件传输协议(SMTP)的目标是可靠高效地传送邮件,它独立于传送子系统而且仅要求一条可以保证传送数据单元顺序的通道。SMTP的一个重要特点是它能够在传送中接力传送邮件,传送服务提供了进程间通信环境(IPCE),此环境可以包括一个网络,几个网络或一个网络的子网。理解到传送系统(或IPCE)不是一对一的是很重要的。进程可能直接和其它进程通过已知的IPCE通信。邮件是一个应用程序或进程间通信。邮件可以通过连接在不同IPCE上的进程跨网络进行邮件传送。更特别的是,邮件可以通过不同网络上的主机接力式传送。2.4.2 SMTP模型 SMTP设计基于以下通信模型:针对用
35、户的邮件请求,发送SMTP建立与接收SMTP之间建立一个双向传送通道。接收SMTP可以是最终接收者也可以是中间传送者。SMTP命令由发送SMTP发出,由接收SMTP接收,而应答则反方面传送。一旦传送通道建立,SMTP发送者发送MAIL命令指明邮件发送者。如果SMTP接收者可以接收邮件则返回OK应答。SMTP发送者再发出RCPT命令确认邮件是否接收到。如果SMTP接收者接收,则返回OK应答;如果不能接收到,则发出拒绝接收应答(但不中止整个邮件操作),双方将如此重复多次。当接收者收到全部邮件后会接收到特别的序列,如果接收者成功处理了邮件,则返回OK应答。SMTP提供传送邮件的机制,如果接收方与发送
36、方连接在同一个传送服务下时,邮件可以直接由发送方主机传送到接收方主机;或者,当两者不在同一个传送服务下时,通过中继SMTP服务器传送。为了能够对SMTP服务器提供中继能力,它必须拥有最终目的主机地址和邮箱名称。MAIL命令参数是回复路径,它指定邮件从何处来;而RCPT命令的参数是转发路径的,它指定邮件向何处去。向前路径是源路径,而回复路径是返回路径(它用于发生错误时返回邮件)。当同一个消息要发往不同的接收者时,SMTP遇到了向不同接收者发送同一份数据的复制品的问题,邮件命令和应答有一个比较奇怪的语法,应答也有一个数字代码。在下面,例子中可以看到哪些使用实际的命令和应答。完整的命令和应答在第四节
37、。命令与应答对大小写不敏感,也就是说,命令和应答可以是大写,小写或两者的混合,但这一点对用户邮件名称却不一定是对的,因为有的主机对用户名大小写是敏感的。这样SMTP实现中就将用户邮箱名称保留成初始时的样子,主机名称对大小写不敏感。命令与应答由ASCII字母表组成,当传送服务提供8位字节传送通道,每7位字符正确传送,而最高位被填充为0。当指定一般的命令或应答格式后,参数会由一些类似于语言的字符串表示出来,如"<string>"或"<reverse-path>",这里尖括号表示这是一种类似于语言的变量。3需求分析与功能设计3.1 功能
38、需求分析l 邮件管理系统用户需求分析实际结合邮件管理系统的现实情况来说,主要有如下一些需求:1. 邮件帐户管理,新建邮件帐户,删除邮件帐户。2. 新建邮件,选择一个邮件帐户,输入收件人地址,发送邮件。3. 接收邮件,选择一个邮件帐户,接收该邮件帐户上的邮件。4. 邮件夹管理,包括发件箱,收件箱。根据以上的分析,本系统主要实现邮件账户管理;邮件发送;邮件接收;收件箱、发件箱管理等功能。希望通过该系统的建设能够基本实现一个简单且功能较为完备的邮件收发客户端系统。l 系统功能需求分析概述根据用户需求,该邮件管理系统主要应包括如下功能:(1)邮件帐户设置邮件管理系统客户端软件需要支持多帐户邮件收发,类
39、似OutLook Express、FoxMail等邮件客户端软件。本系统能够支持新建邮件帐户、删除邮件账户等功能;(2)邮件发送发送邮件是一个邮件客户端软件的最基本功能,要求可以输入收件人的地址、邮件标题、邮件正文内容、并能够支持邮件附件。能够正常发送普通邮件和带附件的邮件。(3)邮件接收要求能够接收系统中所有帐户的邮件,具体是先选择一个帐户,然后将该账户下的邮件接收到收件箱中。接收到的是一个邮件列表,主要包括邮件发件人、邮件标题、发送时间等信息。(4)邮件夹管理要求能够将用户收到的邮件放入收件箱中以列表的形式进行显示,对用户发送的邮件同样在发件箱中以列表形式进行显示。(5)其他功能主要包括邮
40、件管理系统界面要美观,操作简便等。3.2 性能需求分析由于本邮件管理系统软件是安装在个人电脑上的客户端软件,所以要求用户界面简洁,友好,方便使用和操作。邮件管理系统的基本功能是收发邮件和账户管理,要求账户管理能够实时响应,发送邮件时要求系统响应速度快,发送普通邮件要求在3秒内发送完成。发送带附件的邮件能够在1分钟之内发送完成。系统响应速度决定用户体验,如果一款软件每个操作都要用户等待很长时间,那这注定是一款失败的软件系统。邮件收取同样要求速度不能太慢,对于普通邮件,要求5秒钟之内可以收取一封。对于带附件的邮件,要求能够在1分钟之内收取完成。此外,系统运行时候不能占用太多资源,试想一下,假如,当
41、用户使用这款软件时,软件占用了太多的系统资源而导致用户对电脑的其他操作都很难进行,那么,谁还会用这款软件呢?所以,该软件还应该具备一种特点就是:低的系统资源占用率。4 总体设计4.1 软件模块结构设计系统功能结构图,本系统的系统功能模块结构图如下图4.1所示:邮件管理系统帐户管理邮件夹登录退出系统登录退出程序收件箱发件箱收发邮件收取账户邮件发送邮件新建邮件账户删除邮件账户图4.1 系统功能结构图4.2 软件架构设计该邮件管理系统采用.NET技术进行开发,开发语言使用C#。后台采用SQL Server2005数据库。本程序基于C/S架构,其软件架构图如下图4.2所示:.NET Framework
42、 2.0以上LumiSoft.Net.dllSQL Server2005邮件管理系统客户端收、发邮件的业务逻辑层代码数据库存取层ADO.NETLumiSoft邮件中间件,封装SMTP、POP3协议邮件服务器图4.2 软件架构图4.3 数据库结构设计4.3.1数据库概念结构设计(E-R图)ER图是用来表示数据及其联系的工具,它描述的是现实世界的数据模型,与具体的DBMS无关,但是它是设计阶段设计数据库逻辑模型的重要依据。本电子邮件管理系统主要利用SMTP和POP3协议实现邮件收发,需要使用数据库保存用户信息、用户邮件账户以及发送的邮件。实体之间的关系举例来说,用户和邮件账户之间是1对多的关系,即
43、一个用户可以新建多个邮件账户;用户和邮件之间是1对多的关系。邮件和账户之间是多对1的关系等。本邮件管理系统总体E-R图如下图4.3所示:用户邮件帐户编号用户名称创建时间用户描述帐户编号邮件地址密码POP3服务器状态发件箱1:N1:N编号发送时间发件人密码Pop3端口Smtp服务器Smtp端口收件人标题内容附件图4.3 邮件管理系统E-R图4.3.2数据库逻辑结构设计l 用户信息表:Users用户信息表用于存放邮件管理系统登录用户的基本信息,包括用户编号、用户名、密码、创建时间、描述。其中,编号作为该表的主关键字(primary key)。如表4.1所示:表4.1 Users表设计字段名数据类型
44、说明备注id自动编号用户编号主关键字mingchengVarchar(200)用户登录名不可为空passwordVarchar(200)用户密码不可为空UsetypeVarchar(200)用户类型不可为空createtimedatetime创建时间默认值:Getdate()descrptionText用户描述可为空l 邮件账户表:mailaccount邮件帐户表用于存放邮件管理系统中用户的邮件帐户信息,包括编号、账户名、密码、SMTP服务器地址、SMTP服务器端口号、POP3服务器地址、POP3服务器端口号等。其中,编号作为该表的主关键字(primary key)。如表4.2所示:表4.2
45、mailaccount表设计字段名数据类型说明备注id自动编号帐户编号主关键字BeizhuVarchar(500)备注不可为空EmailVarchar(500)邮件地址不可为空PasswordVarchar(500)邮件密码不可为空StatusVarchar(500)状态默认值:Getdate()pop3serverVarchar(500)POP3服务器不为空pop3portVarchar(500)POP3端口不为空smtpserverVarchar(500)SMTP服务器不为空smtpportVarchar(500)SMTP端口不为空l 发件表:fajianxiang发件箱表用于存放已发送的
46、邮件信息,包括编号、发件人、收件人、发送时间、标题、内容、附件、发送状态等。其中,编号作为该表的主关键字(primary key)。如表4.3所示:表4.3 fajianxiang表设计字段名数据类型说明备注id自动编号邮件编号主关键字FajianrenVarchar(500)发件人不可为空ShoujianrenVarchar(500)收件人不可为空fasongshjiandatetime 发送时间不可为空TitleVarchar(2000)标题默认值:Getdate()contentText内容可为空attchementVarchar(2000)附件可为空statusVarchar(200)
47、状态可为空5 详细设计5.1 系统用例图和流程图用户新建账号发送邮件接收邮件纯文本邮件带附件邮件图5.1.1 系统总体用例图图5.1.2 系统总体流程图5.2 系统登录界面模块使用邮件管理系统必须要登录,系统登录界面如下图5.2所示:图5.2 用户登录界面流程图如下:登录处理代码如下:private void btnLogin_Click(object sender, EventArgs e) UsersManager um = new UsersManager(); Users u = um.Load(new ChinaVcv.Common.ParamTable("mingchen
48、g", txtUserName.Text); if (u = null) MessageBox.Show("不存在的用户名"); return; if (u.Password != txtPassword.Text) MessageBox.Show("密码错误,请从新输入"); txtPassword.Focus(); return; this.Hide(); Start s = new Start(); s.Show(); 5.3 系统主界面模块登录后进入系统主页面,主页面分为上下两部分,上一部分由标题栏、菜单栏和图标栏构成。下一部分显示邮件
49、夹、邮件列表等信息。系统主界面如下图5.3所示:图5.3 邮件管理系统主界面5.4 新建邮件帐户模块单击菜单栏里的邮件 新建邮件账户,添加新的邮件账户。邮件账户信息保存到系统的mailaccount表中,其运行界面如下图5.4.1和图5.4.2所示:图5.4.1 新建邮件账户截图图5.4.2新建邮件账户,设置邮件服务器信息流程图如下:5.5 系统发送邮件界面模块单击菜单栏里的发送邮件菜单,弹出选择用户账户界面,如下图5.5.1所示:图5.5.1 发送邮件选择邮件账户选择相应的账户,单击确定。弹出邮件发送界面,用户可以在此界面上输入收件人地址、邮件主题、邮件内容,可以增加附件。如下图5.5.2所
50、示:图5.5.2 发送邮件界面发送邮件的核心类名为SmtpMail,隶属于命名空间MailSend。封装了发送邮件的具体实现方法,也是具体的RFC用代码实现的过程。而用户通过具体的操作接口,接口与SmtpMail类通过交互操作来实现用户发送信件的操作。流程图如下:邮件发送的代码如下所示:SmtpMail send = new SmtpMail(alAttachement); Cursor.Current = Cursors.WaitCursor; send.Charset = "GB2312" send.Priority = "Normal" send.
51、eSmtp = true; send.MailServerUserName = FanjiaAccount.Email; send.MailServerPassWord = FanjiaAccount.Password; Boolean res = send.Send(FanjiaAccount.Smtpserver, FanjiaAccount.Email, FanjiaAccount.Beizhu, txtmaildizhi.Text, true, txtTitle.Text, txtContent.Text); Cursor.Current = Cursors.Default; Faji
52、anxiangManager fjxm = new FajianxiangManager(); Fajianxiang fjx = new Fajianxiang(); fjx.Id = (fjxm.GetMaxIndex() + 1).ToString(); /发件人 fjx.Fajianren = send.From; /收件人 fjx.Shoujianren = txtmaildizhi.Text; fjx.Title = txtTitle.Text; fjx.Content = txtContent.Text; fjx.Attchement = "" fjx.Fas
53、ongshjian = DateTime.Now; fjx.Status = res = true ? "已发送" : "待发送" fjxm.Save(fjx); if (res) MessageBox.Show("邮件发送成功"); else MessageBox.Show("邮件发送失败");5.6 系统接收邮件模块单击主页面上的接收邮件图标按钮,弹出账户选择界面,用户选择一个邮件账户,就可以把该账户的邮件全部接收显示到界面上。如下图5.6.1和图5.6.2所示:图5.6.1 账户选择界面图5.6.2 接收邮件
54、界面流程图如下:5.7 系统发件箱邮件模块系统发件箱模块储存了用户发出的邮件,其运行截图如下图5.7所示:图5.7 邮件发件箱运行界面5.8 数据库操作模块该邮件管理系统采用了模块化设计思想,数据库操作被封装到一个单独的C#工程中,该c#工程编译后生成DLL文件供邮件管理系统UI模块使用。数据库操作被封装到该模块中,其中,数据库连接字符串写到dbhelpconfig.xml配置文件中,该配置文件内容如下所示:<?xml version="1.0" encoding="utf-8" ?><Configs> <Connections name="SQL Server 2005" > <!-start 表示数据库为默认连接, 生效-> <Connection type="Mircosoft SQL Server 2000/2005" dirverclass="ChinaVcv.DataAcessLayer.SqlDataBase" url="server=.SQLEXPRESS;uid=sa;pwd=2005;database=mail&quo
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论