您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 综合/其它 > 电子邮件系统的设计方案与实现
个人收集整理资料,仅供交流学习,勿作商业用途第一章前言1.1课题来源当前流行的各大邮件客户端软件除了最主要的收发信件之外,功能越来越复杂,但是人们平常真正用到的功能很少,很多功能尤其对于那些计算机知识相对缺乏的人来说,更加显得太过于华丽而不太实用。有鉴于此,在了解RFC底层协议的基础上,本人开发了这个各种功能相对简单实用的邮件客户端程序,简化了很多不必要的功能。1.2电子邮件介绍电子邮件简称E-mail)又称电子信箱、电子邮政,它是一种用电子手段提供信息交换的通信方式。它是全球多种网络上使用最普遍的一项服务。这种非交互式的通信,加速了信息的交流及数据传送,它是一个简易、快速的方法。通过连接全世界的Internet,实现各类信号的传送、接收、存储等处理,将邮件送到世界的各个角落。到目前为止,可以说电子邮件是Internet资源使用最多的一种服务,E-mail不只局限于信件的传递,还可用来传递文件、声音及图形、图像等不同类型的信息。电子邮件不是一种“终端到终端”的服务,是被称为“存储转发式”服务。这正是电子信箱系统的核心,利用存储转发可进行非实用时通信,属异步通信方式。即信件发送者可随时随地发送邮件,不要求接收者同时在场,即使对方现在不在,仍可将邮件读取信件,不受时空限制。在这里,“发送”邮件意味着将邮件放到收件人的信箱中,而“接收”邮件则意味着从自己的信箱中读取信件,信箱实际上是由文件管理系统支持是一个实体。因为电子邮件是通过邮件服务器mailserver)来传递的。通常mailserver是执行多任务操作系统UNIX的计算机,它提供24小时的电子邮件服务,用户只要向mailserver管理人员申请一个信箱账号,就可使用这项快递的邮件服务。1.3电子邮件的工作原理:电子邮件的发送是通过电子邮件简单传速协议SimpleMailTransferProtocol,简称SMTP)来完成的,电子邮件的接受是通过POP3协议来实现。它是Internet下的一种电子邮件通信协议。电子邮件的基本原理,是在通信网上设立“电子信箱系统”,它实际上是一个计算机系统。系统的硬件是一个高性能、大容量的计算机。硬盘作为信箱的存储介质,在硬盘上为用户分一定的存储空间作为用户的“信箱”,每位用户都有属于自己的一个电子信箱。并确定一个用户和用户可以随意修改的口令。存储空间包含存放所收信件、编辑信件以及信件存盘三部分空间,用户使用口令开启自己的信箱,并进行发信、读信、编辑、转发、存档等各种操作。系统功能主要由软件实现。1.4开发环境及运行环境1.4.1开发环境AMDAthlom(TM,512内存,80G硬盘MicrosoftR)WindowsXPProfessionalMicosoftVisualStudio2003CSharp)MicosoftDeveloperNetworkforVisualStudio.NET20031.4.2运行环境Internetpentium2及以上处理器,32M以上内存,4G以上硬盘Micosoftwindows9X/NT操作系统800*600或以上的屏幕分辨率确保机器上安装有.NetFrameWork1.0或者以上版本第二章系统需求分析2.1系统功能需求分析电子邮件系统需求实现的功能包括新建用户的帐号,接受简单邮件或带附件的邮件,发送简单邮件或发送带附件的邮件,电子邮件编号,电子邮件分类管理,通信薄管理。为了使用通信薄,于是添加了对用户资料的增加,修改,取消操作。2.1.1软件的总体架构个人收集整理资料,仅供交流学习,勿作商业用途图1软件构架图2.1.2系统功能图2系统功能图2.1.3系统总体用例图图3系统总体用例图2.2数据库需求分析发送邮件接收主要功能选择主界面用户客户端软件电子邮件接收系统电子邮件接收系统附加功能各种错误的提示简单邮件接收带有附件的邮件接收简单邮件发送带有附件的邮件发送电子邮件编写电子邮件的分类管理用户新建帐号发送邮件纯文本邮件带附件邮件接收邮件通讯薄管理个人收集整理资料,仅供交流学习,勿作商业用途在对系统进行系统需求分析的基础上,可以得到系统在处理数据时会用到下面所示的数据项和数据结构:1)用户信息:帐号名称,用户名,密码,电子邮箱地址,SMTP服务器,SMTP端口号,POP3服务器,POP3端口号。2)通信薄信息:姓名,邮箱地址,电话号码,QQ号,手机号码,通信地址。第三章系统设计3.1系统的流程设计邮件客户端最重要的两个功能就是接收邮件和发送邮件,其中接收邮件的流程图如图4所示。从流程图中可以看出,接收邮件时首先要创建一个TCP连接到POP3服务器。如果连接不成功就退出执行,连接成功后再发送USER和PASS命令进行身份验证,身份验证通过后再通过STAT命令获得要接收的邮件数,当邮件数大于0时,通过RETR命令逐个接收邮件。接收邮件完毕后,检查帐号中是否保留服务器上的邮件设置,如果是就不作任何操作,否则从服务器上删除已经接受的邮件。最后关闭连接。完成邮件接收。开始连接服务器连接成功?登录服务器登陆成功获得邮件数目邮件数0接受全部的邮件保留服务器上的邮件?删除邮件关闭连接退出个人收集整理资料,仅供交流学习,勿作商业用途图4接收邮件流程图发送邮件的流程图,先检查“发信箱”目录中是否有待发邮件,如果有就逐个发送这些邮件,流程图如图5所示。其发送过程,首先需要创建一个TCP连接,连接到SMTP服务器,如果连接不成功就退出程序。连接成功后发送USER和PASS命令进行身份验证。身份验证通过后发送邮件,如果发送成功就关闭连接,更新数据库,完成邮件发送任务。图5发送邮件流程图3.2SMTP协议的研究由于要开发的是邮件客服端程序,就不得不用到SMTP协议和POP协议。而我个人负责开始检查发信箱中的待发邮件待发邮件?连接服务器连接成功SMTP服务器需要身份验证?身份验证身份验证成功?发送待发邮件发送成功关闭连接更新数据库获得下一个邮件退出个人收集整理资料,仅供交流学习,勿作商业用途的是邮件发送功能的实现,因此就必然会涉及到SMTPSimpleMailTransferProtocol)协议。SMTP被用来在因特网上发送邮件,该协议规定了一些基本的命令和方法使客服端与服务器进行交互,以达到发送邮件的目的。3.2.1SMTP介绍简单邮件传输协议SMTP)的目标是可靠高效地传送邮件,它独立于传送子系统而且仅要求一条可以保证传送数据单元顺序的通道。SMTP的一个重要特点是它能够在传送中接力传送邮件,传送服务器提供了进程间通信环境IPCE),此环境可以包括一个网络,几个网络或一个网络的子网。理解到传输送系统或IPCE)不是一对一的是很重要的。进程可能直接和其它进程通过已知的IPCE通信。邮件是一个应用程序或进程间通信。邮件可以通过连接在不同IPCE上的进程跨网络进行邮件传送。更特别是,邮件可以通过不同网络上的主机接力式传送。3.2.2SMTP模型SMTP设计基于以上通信模型:针对用户的邮件请求,发送SMTP建立于接收SMTP之间建立一个双向传送通道。接收SMTP可以是最终接收者也可以是中间传送者。SMTP命令由发送SMTP发出,由接收SMTP接收,而应答则反方面传送。一旦传送通道建立,SMTP发送者发送MAIL命令指明邮件发送者。如果SMTP接收者可以接收邮件则返回OK应答。SMTP发送者再发出RCRT命令确认邮件是否接收到。如果SMTP接收者接收,则返回OK应答;如果不能接收到,则发出拒绝接收应答但不中止整个邮件操作),双方将如此重复多次。当接收者到全部邮件后会接收到特别的序列,如果接收者成功处理了邮件,则返回OK应答。SMTP提供传送邮件的机制,如果接收方与发送方连接在同一个传送服务下时,邮件可以直接由发送方主机传送到接收方主机;或者,当两者在不同一个传送服务下时,通过中继SMTP服务器传送。为了能够对SMTP服务器提供中继能力,它必须拥有最终目的主机地址和邮箱名称。MAIL命令参数是回复路径,它指定邮件从何处来;而RCPT命令的参数是转发路径的,它指定邮件向何处去。向前路径是源路径,而回复路径是返回路径它用于发生错误时返回邮件)。当同一个消息要发往不同的接收者时,SMTP遇到了向不同接收者发送同一份数据的复制品的问题,邮件命令和应答有一个比较奇怪的语法,应答也有一个数字代码。在下面,例子中可以看到哪些使用实际的命令和应答。完整的命令和应答在第四节。命令与应答对大小写不敏感,也就是说,命令和应答可以是大写,小写或两者的混合,但这一点对用户邮件名称却不一定是对的,因为有的主机对用户名大小写是敏感的。这样SMTP实现中就将用户邮箱名称保留成初始时的样子,主机名称对大小写不敏感。命令与应答由ASCII字母表组成,当传送服务提供8位子节传送通道,每7位字符正确传送,而最高位被填充为0。当指定一般的命令或应答格式后,参数个人收集整理资料,仅供交流学习,勿作商业用途会由一些类似于语言的字符串表示出来,如“string”或“reverse-path”,这里尖括号表示这是一种类似于语言的变量。3.3SMTP协议的命令和应答3.3.1SMTP协议的命令SMTP命令定义了邮件传输或用户定义的系统功能。它的命令是由CRLF结束的字符串。而在带有参数的情况下,命令本身由SP和参数分开,如果未带参数可以直接和CRLF连接。邮箱的语法格式必须和接收站点的格式一致。3.3.2SMTP的应答码对SMTP命令的响应是多样的,它确定了在邮件传输过程中请求和处理的同步,也保证了发送SMTP知道接收SMTP的状态。每个命令必须有且只有一个响应。SMTP响应由三位数字组成,其后跟一些文本。数字帮助决定下一个应该进入的状态,而文本对人是有意义的。三位的响应已经包括了足够的信息,不用再阅读文本,文本可以直接抛弃或者传递给用户。特别的是,文本是与接收和环境相关的,所以每次接收到的文本可能不同。正规的情况下,响应由下面序列构成:三位的数字,SP,一行文本和一个CRLF,或者也可以是一个多行响应。只有EXPN和HELP,命令可以导致多行应答,然而,对所有命令,多行响应都是允许的。REPLYCODESBYFUNCTIONGROUPS500格式错误,命令不可识别此错误也包括命令行过长)第四章RFC822说到发送和接收邮件,就不得不提RFC822了。RFC822的全称是“ARPA因特网文信件格式的标准”StandardfortheFormatofARPAInternetTextMessages)。该标准提供了邮件内容的格式和相关语义。4.1RFC822简单介绍RFC822规定的电子邮件内容全部由ASCII字符组成,就是通常所说的文本文件,因而标准将它称为Internet文本信件InternetTextMessages)。从直观上看,信件非常简单,就是一系列由ASCII字符组成的文本行,每一行以回车换形符结束。从组织上看,信件内容结构分为两大部分,中间用一个空白行只有CRLF符的行)来分隔。第一部分称为信件的头部,包括有关发送方、接收方、发送日期等信息。第二部分称为信件的体部,包括信件内容的正文文体。信头是必需的,信体是可选的,即信体可有可无。如果不存在信体,用作分隔的空白行也就不需要。在信体中,也可以有用作分隔的空白行。这样设计的信件便于进行语法分析,提取信件的基本信息。在RFC822中规定,信件体就是一系列的向收信人表达信息的文本行,比较简单,可以包括任意文本。并没有附加的结构。信件头则具有比较复杂的结构,在下一小节中详述。4.2信件的头部4.2.1信头一般格式个人收集整理资料,仅供交流学习,勿作商业用途信头的结构比较复杂,信头由若干信头字段headerfield)组成,这些字段为用户和程序提供了关于信件的信息。要了解信头的结构就要弄清楚各种信头字段。所有的信头字段都具有相同的语法结构,从逻辑上说,包括四部分,字段名fieldname)紧跟冒号“:”colon),后跟字段体fieldbody),最后
本文标题:电子邮件系统的设计方案与实现
链接地址:https://www.777doc.com/doc-4204698 .html