朱祺 论文(5)_第1页
朱祺 论文(5)_第2页
朱祺 论文(5)_第3页
朱祺 论文(5)_第4页
朱祺 论文(5)_第5页
已阅读5页,还剩49页未读 继续免费阅读

下载本文档

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

文档简介

1、武汉工程大学邮电与信息工程学院武汉工程大学邮电与信息工程学院毕业设计(论文)毕业设计(论文)电子邮件软件的设计与实现电子邮件软件的设计与实现design and realization of email software学生姓名 朱祺朱祺 学 号 7403130329 专业班级 通信工程通信工程 0703 班班指导教师 程雯程雯 2011 年年 5 月月武汉工程大学邮电与信息工程学院毕业设计(论文)作者声明作者声明本人声明所呈交的论文是我个人在导师指导下进行的研究工作及取得的研究成果,除了文中特别加以标注的地方外,没有任何剽窃、抄袭、造假等违反学术道德、学术规范的行为,也没有侵犯任何其他人或组

2、织的科研成果及专利。与我一同工作的同志对本研究所做的任何贡献均已在论文中作了明确的说明并表示了谢意。如本毕业设计(论文)引起的法律结果完全由本人承担。毕业设计(论文)成果归武汉工程大学邮电与信息工程学院所有。特此声明。 作者专业: 作者学号: 作者签名: _年_月_日武汉工程大学邮电与信息工程学院毕业设计(论文)摘要摘要电子邮件来源于专有电子邮件系统。早在 internet 流行以前很久,电子邮件就已经存在了,是在主机-多终端的主从式体系中从一台计算机终端向另一计算机终端传送文本信息的相对简单的方法而发展起来的。经历了漫长的过程之后,它现在已经演变成为一个更加复杂并丰富得多的系统,可以传送声音

3、、图片、图象、文档等多媒体信息,以至于如数据库或帐目报告等更加专业化的文件都可以电子邮件附件的形式在网上分发。但毫无疑问的是,internet 扩展了其应用的范围。过去只能在其局域网上进行交谈的公司现在可以通过网络与他们的客户、竞争伙伴和世界上的任何人进行通信和交流。一旦某个组织的电子邮件系统运行在支持 tcp/ip 协议的网络上或具有支持两个 internet 邮件服务协议 smtp(简单邮件传输协议)和 pop(邮局协议)之一的 internet 网关,它的邮件用户就能够连接到任何具有相似连接的电子邮件地址上了,并且不论其电子邮件帐户在何处。本论文第 1 章首先提出了基于 c#的电子邮件软

4、件设计的必要性;第 2 章介绍了利用 c#程序设计语言实现电子邮件软件所涉及到的相关知识;第 3 章对整个软件的设计提出了基本的思路,并讨论了其中存在的相关问题;第 4 章对电子邮件软件的具体实现提出了具体方案;第 5 章对全文进行总结与展望。关键词关键词:smtp;pop3;电子邮件;网络武汉工程大学邮电与信息工程学院毕业设计(论文)abstractelectronic mail is based from the proprietary e-mail systems. before the internet popularity, e-mail has existed, it is dev

5、eloped from the hosts - the master-slave type system, transmitting text messages from a computer to another terminals in a more simple way.after a long time, it has changed into a much more complex and richer system in nowadays. it can transmit sounds, pictures, images, documents and other multi-med

6、ia information, even can distribute the information like database or account reports with attachments. but, there is no doubt that the internet expanded its application scope. those companies which just communicated in local area in old days, now can keep in touch with their clients, competitive par

7、tners or anyone else in the world nowadays. once a organizations e-mail system is running on the support of tcp/ip protocol or smtp which supports the internet gateway for two internet mail service agreement or pop. its email users can connect to any similar email address, no matter where is the ema

8、il accounts. in this paper, chapter 1 introduces: based on the c#, design an email software is necessary; chapter 2 introduces using c # programming language implementation email software involves knowledge; chapter 3 puts forward the basic ideas of the software design, and discusses the problems th

9、at exist among them; chapter 4 provides a complete solution to email server design; chapter 5 carries on the summary and the prospect of full text.key words:internet; smtp;pop3;e-mail武汉工程大学邮电与信息工程学院毕业设计(论文)目目 录录第第 1 章章 绪论绪论.11.1 电子邮件软件发展现状及趋势.11.2c#的特性.21.2.1 c#语言.21.2.2 c#应用程序.21.3 本论文的研究内容.3第第 2 章

10、章 电子邮件软件设计与实现的相关知识分析电子邮件软件设计与实现的相关知识分析.42.1 基于 tcp/ip 的通信技术研究 .42.2 电子邮件客户端分析.52.3 电子邮件服务器分析.52.3.1 smtp 协议概述.72.3.2 pop3 协议概述 .82.4 邮件系统原理概述.8第第 3 章章 电子邮件软件的总体设计电子邮件软件的总体设计.133.1 系统总体设计.133.1.1 性能设计.133.1.2 系统总体框架.143.2 客户端的设计.163.2.1 功能设计.163.2.2 流程图.173.3 服务器的设计.193.3.1 结构设计.193.3.2 功能设计.203.3.3

11、流程图.203.4 建立网络连接.233.5 系统开发环境及运行环境.25武汉工程大学邮电与信息工程学院毕业设计(论文)第第 4 章章 电子邮件软件的具体实现电子邮件软件的具体实现.264.1 电子邮件软件工作原理.264.2 主界面.274.3 账户管理.284.4 新建邮件.294.5 接收/发送邮件.30第第 5 章章 总结与展望总结与展望.31参考文献参考文献.32致谢致谢.33附录附录 1 主要英文缩写语对照表主要英文缩写语对照表.34附录附录 2 主要源程序主要源程序.35武汉工程大学邮电与信息工程学院毕业设计(论文)1第第 1 章章 绪论绪论电子邮件是一种十分重要的 intern

12、et 网络应用。用户只要能连接 internet,就可以通过电子邮件进行通信,交换信息。要使用电子邮件服务,需要邮件服务器软件和邮件客户端软件两方面的紧密配合。收邮件使用 pop3 服务器,发邮件使用 smtp 服务器,邮件服务器一般由邮件服务商提供。客户通邮件客户端软件与邮件服务器进行通信,进行邮件的接收和发送1。1.1 电子邮件软件发展现状及趋势电子邮件软件发展现状及趋势电子邮件通过 intenret 通信实现传统邮局的信件收发功能。与传统的信件传递相比,电子邮件传递信息更加快捷、高效、廉价,可以在几分钟之内将信件传递到世界任何网络用户的邮箱中,而且由于邮箱密码、邮件加密等技术的应用,电子

13、邮件比传统邮件更安全可靠。因此在短短三十年的发展后,电子邮件已成为internet 上不可缺少的现代通信工具。据统计,四分之三以上的用户上网的主要目的是收发邮件,每天有十数亿封电子邮件在全球传递。电子邮件系统在 intenret 使用之前就已经出现。1971 年 raytomlinson 首次在邮件地址中使用符号。但由于当时使用 arpanet 网络的用户较少,且受网络速度的限制,用户只能发送简短的文本信息,电子邮件系统并没有收到足够的重视。直到 1980 年代中期,随着互联网的建立和个人电脑的兴起,电子邮件系统才得到发展,1988 年由史蒂夫道纳尔编写的程序 euroda,使电子邮件系统成为

14、主流应用。随着 1990 年代 intenret 浏览器的诞生,网络用户迅速增加并且出现了提供免费邮件的电子邮件系统,电子邮件被广泛使用.再后来基于 web 的电子邮件系统的产生,允许用户在任何一台连接 internet 网络的电脑上维护和使用邮箱,电子邮件系统进入了快速发展阶段。当前,电子邮件的用户己经从科学和教育行业发展到了普通家庭用户,几乎每个 internet 的用户都具有一个或多个电子邮箱,而且电子邮件传递的信息也从普通文本信息发展到包含声音、图像在内的多媒体信息2。武汉工程大学邮电与信息工程学院毕业设计(论文)21.2c#的特的特性性c#是一种简单的、现代的、面向对象的、类型安全的

15、编程语言。它不但提供了面向对象编程的技术,而且还提供了面向组件编程的支持技术。visual c# 2008 提供了许多方便开发的工具,如高级代码器方便的用户界面设计器、集成调试器等。开发人员使用这些工具,可以更容易在 c#语言 3.0 版和.net framework 3.5 版的基础上开发应用程序。1.2.1 c#语言语言c#是一种 microsoft 公司设计的、简洁的、类型安全的、面向对象的语言。它松散地基于 c/c+语言,并且有很多方面和 java 语言类似。开发人员可以使用c#语言来构建在.net framework 上运行各种安全、可靠的应用程序3。c#语法表现力强、简单易学、容易

16、上手。通常地,开发人员通过很短时间的学习,就能够使用 c#语言开发高效的程序。c#语法提供了许多强大的功能,如可为空置(null)的值类型、枚举、lambda 表达式、直接内存访问等。c#支持泛型类型和方法,进而提供了更为出色的类型安全和性能。特别地,c#还提供了迭代器、语言集成查询(linq)表达式等高级功能,使得开发人员可以在 c#代码中创建具有查询功能的程序代码。当然。c#也是一种面向对象的语言,它也支持封装、继承和多态性的概念。c#程序所有的变量和方法,都封装在类定义中,甚至包括 main()方法(应用程序的入口点) 。通过继承、多态性等技术,类可以从另一个类派生而来,同时也可以实现任

17、意数量的接口。1.2.2 c#应用程序应用程序c#应用程序包括两种应用程序:控制台(console)应用程序和 windows 窗体应用程序。控制台应用程序的界面往往比较简单,而 windows 窗体应用程序能够提供丰富的图形界面4。武汉工程大学邮电与信息工程学院毕业设计(论文)31.控制台应用程序控制台应用程序简单的控制台应用程序通常仅仅由一个类组成,且该类包括一个名称为main(stringargs)的方法。对于大多数 控制台应用程序而言,执行流从一条语句前进到下一条语句,直至运行到程序结尾处,应用程序终止。控制台应用程序运行之后,往往会显示一个 windows 的控制台对话框。用户可以输

18、入参数或命令。当然,控制台应用程序也可以接收由某些对象产生的键盘事件和系统事件驱动5。2.windows 窗体应用程序窗体应用程序windows 窗体应用程序是基于 microsoft windows 平台之上一种经典的可视化应用程序,它特别适合于包含丰富图形用户界面的应用程序。开发人员可以创建大量的 windows 窗体,这些窗体可以响应用户的操作。其实,windows 窗体在响应用户的操作时会触发事先定义的事件,然后系统会调用应用程序中称为事件处理程序的特殊方法。可以说,windows 窗体应用程序执行所有操作几乎都是由事件处理程序启动的。如果未发生事件,那么该应用程序不执行任何操作6。1

19、.3 本论文的研究内容本论文的研究内容当前流行的各大邮件客户端软件的除了最主要的收发信件之外,功能越来越复杂,但是人们平常真正用到的功能很少,很多功能尤其对于那些计算机知识相对缺乏的人来说,更加显得太过于华丽而不太实用。有鉴于此,在了解 smtp 和pop3 协议的基础上,从概要设计到具体设计,利用 c#编程语言,把握整体框架,逐步求精地实现了这个各种功能相对简单实用的电子邮件软件,该软件具备了基本邮件收发功能,并有所创新,对于不必要的功能也有所简化。武汉工程大学邮电与信息工程学院毕业设计(论文)4第第 2 章章 电子邮件软件设计与实现的相关知识分析电子邮件软件设计与实现的相关知识分析2.1

20、基于基于 tcp/ip 的通信技术研究的通信技术研究互联网是一个庞大而复杂的系统。对这种系统人们通常使用“分而治之”的方法,即把一个大问题分成若干个小问题进行设计,并将各部分有机的结合起来,实现对整个系统的设计。按照这一思想对网络系统进行设计,将它的软件分为若干层,每层负责不同的通信功能。每一层好像一个“黑匣子” ,它的内部处理过程对于其他层是透明的,相邻层之间使用接口联系起来。tcp/ip(传输控制协议/网间协议)是一种网络通信协议,它规范了网络上的所有通信设备之间的数据格式以及传送方式。tcp/ip 是 internet 的基础协议,它规定了 internet 数据传输和网络寻址的标准。t

21、cp/ip 中使用四层模型对网络进行描述,将网络由上而下分为应用层、传输层、网络层和数据链路层,具体情况见图 2.1 所示7。图图 2.1 tcp/ip 四层网络模型四层网络模型应用层传输层网络层数据链路层数据链路层网络层传输层应用层物理网络主机 a主机 b武汉工程大学邮电与信息工程学院毕业设计(论文)5应用层是所有基于 tcp/ip 协议簇的应用协议的统称。传输层负责分割、组合数据、实现端到端的逻辑连接。网络层负责管理网络地址,定位设备,决定路由。数据链路层为网络层提供数据传送服务。tcp 是一种可靠的面向连接的传送服务。它在传送数据时是分段进行的,主机交换数据必须建立一个会话,又称虚拟连接

22、。在数据发送过程中,为每一个tcp 传输的数据段指定顺序号。通过发送应答的方式,来确认对方主机是否收到数据,以保证其传输的可靠性。对于传输的每一个数据段,接收主机必须在指定的时间返回收到确认;如果发送主机未收到接收主机的收到确认,数据段就会被重新发送;如果收到的数据包损坏,接收主机会舍弃它,因为确认未被发送,发送者会重新发送分段8。2.2 电子邮件客户端分析电子邮件客户端分析邮件客户端软件的作用是来收发电子邮件的,它是电子邮件产生初期的邮件服务软件,如今主要被商务人士广泛使用,普通百姓一般使用 web 邮件。web邮件,也就是我们平时登陆网页上的邮箱,是后来才发展起来的。实际上收发 web 邮

23、件时,我们首先将客户端软件临时下载到我们的电脑上,然后才能够收发邮件。而邮件客户端软件则是事先安装到电脑上,打开软件即可以收发邮件,不需要登陆网页,也不需要临时下载东西,所有收发邮件的速度要快于 web 邮件9。目前邮件客户端软件主要有 windows 自带的 outlook express,还有foxmail。2.3 电子邮件服务器分析电子邮件服务器分析电子邮件服务器是处理邮件交换的软硬件设施的总称,包括电子邮件程序、电子邮件箱等。它是为用户提供全由 e-mail 服务的电子邮件系统,人们通过访问服务器实现邮件的交换。服务器程序通常不能由用户启动,而是一直在系统中运行,它一方面负责把本机器上

24、发出的 e-mail 发送出去,另一方面负责接收其他主武汉工程大学邮电与信息工程学院毕业设计(论文)6机发过来的 e-mail,并把各种电子邮件分发给每个用户10。 电子邮件程序是计算机网络主机上运行的一种应用程序,它是操作和管理电子邮件的系统。在你处理电子邮件时,需要选择一种供你使用的电子邮件程序。由于网络环境的多样性,各种网络环境的操作系统与软件系统也不相同,因此电子邮件系统也不完全一样。当 alice 给 bob 发一封普通的邮政信件时,她把这封信装入一个信封里,在信封上写明 bob 的地址和自己的回信地址,然后投入邮箱;邮政业务在递送这封信的过程中,也会把表明时间和地点的邮戳盖在信封上

25、。类似地,当电子邮件消息从一个人传送到另一个人时,在信体之前会有一个含有这些外围信息的信头。这些信息由一系列在 rfc 822 中定义的邮件消息头部及其值构成。邮件消息中构成信头的各个头部和信体之间以一个空行(即 crlf)分割。rfc 822 详细说明了各个邮件消息头部的格式和含义。邮件消息的每个头部都是直观可读的文本,由一个后跟冒号的关键字和相应的值构成。这些头部有些是必须的,有些则是可选的。每个信头必须有一个 from:头部和一个 to:头部。还可以有一个 subject:头部和其他头部。这些头部和前面讨论的 smtp 命令不是一回事:smtp 命令是 smtp 握手协议的一部分,邮件消

26、息头部则属于邮件消息的一部分。下面是一个典型的电子邮件信头:from: to: subject: this is a letter信头之后空一行就是信体。smtp rfc822 要求每个邮件消息的信体以单个点号构成的一行做结束标记,换用 ascii 字符形式,就是每个邮件消息的信体必须以“crlf.crlf”结尾,其中cr 和 lf 分别代表回车符和换行符。这种方式下,当从同一个 smtp 客户接收一系列邮件消息时,smtp 服务器可以通过在字节流中搜索“crlf.crlf”来分割每个消息。 rfc 822 中说明的邮件消息头部尽管足以满足发送普通 ascii 文本邮件的要

27、求,但是在多媒体消息(例如,包含图像、音频或视频数据的消息)的描述和非武汉工程大学邮电与信息工程学院毕业设计(论文)7ascii 文本格式(例如,非英语国家使用的文字)的承载上,却显然不够,例如,若信体是 jpeg 图像的二进制数据,那么这些二进制数据字节流中可能出现“crlf.crlf”模式。这将导致 smtp 服务器误认为当前邮件消息已结束。为避免这样的问题,二进制数据应以某种方式编码成 ascii 文本,保证其中不存在特定的 ascii 字符(包括点号)。要发送非 ascii 文本的邮件消息,必须由发送者的用户代理在其中增添额外的头部。rfc 2045 和 rfc 2046 定义了这些额

28、外的头部,它们是针对 rfc 822 的多用途因特网邮件扩展(multipurpose internet mail extensions, 简称 mime)。支持多媒体的两个关键 mime 头部是 content-type:和 content-tansfer- encoding:。content-type:头部允许接收用户代理对邮件消息采取合适的行动。例如,通过指出信体内容为一个 jpeg 图像,接收用户代理可以把信件定向到某个 jpeg 解压缩例程。为确保 smtp 正常工作,非 ascii 文本消息必须预先编码成 ascii 文本格式。content-tansfer-encoding:头部

29、用于告知接收用户代理信体已被编码成 ascii 格式,并指出具体编码方式。这样,当某个用户代理收到一个包含这两个头部的邮件消息时,它首先使用 content-tansfer-encoding:头部的值把信体转换成原始的非 ascii 文本形式,再使用 content-type:头部的值确定自己应该对信体采取什么行动11。2.3.1 smtp 协议概述协议概述简单邮件传输协议(smtp)的目标是可靠高效地传送邮件,它独立于传送子系统而且仅要求一条可以保证传送数据单元顺序的通道。smtp 的一个重要特点是它能够在传送中接力传送邮件,传送服务提供了进程间通信环境(ipce) ,此环境可以包括一个网络

30、,几个网络或一个网络的子网。理解到传送系统(或 ipce)不是一对一的是很重要的。进程可能直接和其它进程通过已知的 ipce 通信。邮件是一个应用程序或进程间通信。邮件可以通过连接在不同 ipce 上的进程跨网络进行邮件传送。更特别的是,邮件可以通过不同网络上的主机接力式传送。它是 internet 上传输电子邮件的标准协议,用于提交和传送电子邮件,规定武汉工程大学邮电与信息工程学院毕业设计(论文)8了主机之间传输电子邮件的标准交换格式和邮件在链路层上的传输机制12。smtp 通常用于把电子邮件从客户机传输到服务器,以及从某一服务器传输到另一个服务器。2.3.2 pop3 协议概述协议概述po

31、p3(post office protocol 3)即邮局协议的第 3 个版本,它规定怎样将个人计算机连接到 internet 的邮件服务器和下载电子邮件的电子协议。它是因特网电子邮件的第一个离线协议标准,pop3 允许用户从服务器上把邮件存储到本地主机(即自己的计算机)上,同时删除保存在邮件服务器上的邮件,而 pop3 服务器则是遵循 pop3 协议的接收邮件服务器,用来接收电子邮件的。它是 internet 上传输电子邮件的第一个标准协议,也是一个离线协议。它提供信息存储功能,负责为用户保存收到的电子邮件,并且从邮件服务器上下载取回这些邮件。pop3 为客户机提供了发送信任状(用户名和口令

32、) ,这样就可以规范对电子邮件的访问。imap4,internet message access protocol,网际消息访问协议,目前是第 4版。当电子邮件客户机软件在笔记本计算机上运行时(通过慢速的电话线访问互联网和电子邮件) ,imap4 比 pop3 更为适用。使用 imap 时,用户可以有选择地下载电子邮件,甚至只是下载部分邮件。因此,imap 比 pop 更加复杂。mime,多用途的网际邮件扩展 internet 上的 smtp 传输机制是以 7 位二进制编码的 ascii 码为基础的,适合传送文本邮件。而声音、图象、中文等使用 8 为二进制编码的电子邮件需要进行 ascii 转

33、换(编码)才能够在 internet 上正确传输。mime 增强了在 rfc 822 中定义的电子邮件报文的能力,允许传输二进制数据。mime 编码技术用于将数据从 8 位都使用的格式转换成数据使用 7 位的 ascii 码格式13。武汉工程大学邮电与信息工程学院毕业设计(论文)92.4 邮件系统原理概述邮件系统原理概述假设 alice 想给 bob 发送一个 jpeg 图像,她为此调用自己的用户代理,给出 bob 的电子邮件地址和邮件消息的主题,并把这个 jpeg 图像插入这个邮件消息的信体中(这个图像有可能是作为该邮件消息的“附件”插入的,具体取决于alice 所用的用户代理)。alice

34、 填写完邮件消息后让用户代理把它发送出去。alice的用户代理生成一个大体如下的 mime 消息:from: to: subject: picture of minemime-version: 1.0content-transfer-encoding: base64content-type: image/jpeg.base64 编码数据.base64 编码数据.从这个例子看到,alice 的用户代理采用 base64 编码格式对这个 jpeg 图像进行编码,而 base64 是在 mime 中标准化的用于转换成某种可接受的 7 位 ascii格式的编码技术之一(定义在 rf

35、c 2045 中)。content-type:头部遵循 mime 规范(定义在 rfc 2046 中),其格式为:content-type: type/subtype; parameters。其中 parameters(以及其前面的分号)是可选的。通过在 content-type:头部给出媒体类型(type)名和子类型(subtype)名来说明mime 消息信体中数据的性质。类型名和子类型名之后的其余部分是一组参数。类型名用于声明数据的一般类型,子类型名用于指明这类数据中的某种具体格式。参数是对于类型的修饰说明,取值取决于类型和子类型本身,不影响内容性质的指定。mime 是按照可扩展目标仔细地

36、设计的,并预期媒体类型/子类型以及它们的相关参数会随时间显著增长。为确保以有秩序的文档完备公开的方式开发这些类型/子类型,mime 建立了一套注册程式,把因特网分配数值权威(internet asigned numbers authority, 简称 iana)作为 mime 各个可扩展域的中心注册处。武汉工程大学邮电与信息工程学院毕业设计(论文)10rfc 2048 具体说明了这些可扩展域的注册程式。每个 mime 类型关联一组子类型,其数量在逐年增长。一些主要类型如下:(1) text:text 类型用于向接收者的用户代理指出消息体为文本。该类型的一个普遍使用的类型/子类型对为 text/

37、plain。子类型 plain 指定不含任何格式定义信息的普通文本。plain 文本不加任何解释地按照原样显示,不需要特殊的软件,但要求支持给定的字符集。在实际的邮件消息中经常能看到值对为 text/plain;charset = gb2312 或 text/plain; charset = “iso-8859-1”的 content-type:头部,其中的参数指出用于产生相应消息的字符集。另一个普遍使用的类型/子类型对是 text/html。子类型 html 指示接收用户代理解释嵌入在消息体中的 html 标记,从而像 web 页面那样显示信件内容,其中有可能包含各种字体的文本、超链接、ja

38、va 小应用程序等等。(2) image:image 类型用于向接收用户代理指出消息体为图像。该类型较为流行的两个类型/子类型对为 image/gif 和 image/jpeg,接收用户代理碰到这样的类型时,就知道该把消息体作为 gif 图像或 jpeg 图像解码并显示。(3) audio:audio 类型需要音频输出设备(例如扬声器或电话)来表达内容。这类型中常见的已标准化子类型包括 basic(基本 8 位 u-law 编码)和 32kadpcm(rfc 1911 中定义的一种 32kbps 格式)。(4) video:video 类型的子类型包括 mpeg 和 quicktime。(5)

39、 application:application 类型适用于不适合归为其它类别的数据,通常用在必须由某个应用程序预先处理才能为用户所见或所用的数据上。例如,当用户在某个电子邮件消息中附带一个微软 word 文档时,其用户代理一般把它的类型子类型对指定为 application/msword;这将导致接收用户代理启动微软 word 应用程序,并把该 mime 消息的信体传递给它处理。这类型的一个重要子类型是 octet-stream,它用于指示信体含有任意的二进制数据。收到内容类型为application/octet-stream 的邮件消息后,接收用户代理会提示用户是否把信体保存到硬盘中,以便

40、稍后处理。(6) multipart:multipart 是 mime 类型中一个相当重要的类型。当一个多媒体消息含有不止一个对象时(例如多个图像或 ascii 文本与图像共存),其 content-武汉工程大学邮电与信息工程学院毕业设计(论文)11type:头部的值通常为 multipart/mixed。这头部向接收用户代理指出本消息中含有多个对象。在多个对象共处同一个邮件消息中的情况下,通过在每个对象之间放置边界字符串,并在每个对象之前定义 content-type:和 content-transfer-encoding:头部,接收用户代理可以确定:每个对象的起止位置;每个非 ascii

41、文本对象的传送编码方式;每个对象的内容类型。为便于理解 multipart/mixed,举例如下:假设 alice 想给 bob 发送一个邮件消息,其内容为一些 ascii 文本,后跟一个jpeg 图像,再跟一些 ascii 文本。alice 使用自己的用户代理编辑文本并附上图像后,该用户代理生成一个如下的邮件消息:from: to: mime-version: 1.0content-type: multipart/mixed; boundary=startofnextpart-startofnextpartdear bob, please look at the pict

42、ure-startofnextpartcontent-transfer-encoding: base64content-type: image/jpeg.base64 编码的数据. .base64 编码的数据.-startofnextpartthere is some acsii letter here从中可以看出,content-type:头部的 boundary 参数用于指定分隔各个部分的边界字符串。在邮件消息体中,该分隔字符串以两个短划线开头,以 crlf 结尾。一个电子邮件消息由多个部件构成。信体是邮件消息的核心,它是发送者发送给接收者的真正数据。对于多部分邮件消息来说,其信体本身由多

43、个部分组成,而每个部分又有一个或多个说明其数据性质的头部。信体之前是一个空行和由多武汉工程大学邮电与信息工程学院毕业设计(论文)12个邮件消息头部组成的信头。这些头部既包括 rfc 822 头部,例如 from:、to:和 subject:,也包括 mime 头部,例如 content-type:和 content-transfer-encoding:。除此之外,还有由 smtp 接收服务器插到每个邮件消息项端的received:头部,它给出了发出本消息的 smtp 服务器的主机名(“from”)、收取本消息的 smtp 服务器的主机名(“by”)以及接收服务器收取本消息的时间。因此,作为接收

44、者的用户看到的邮件消息大致如下:received: from by ; 18 oct 2007 09:53:37 gmtfrom: to: mime-version: 1.0content-type: multipart/mixed; boundary=startofnextpart-startofnextpartdear bob, please look at the picture-startofnextpartcontent-transfer-encoding: base64content-type: image/jpeg.base64 编码的数据. .

45、base64 编码的数据.-startofnextpartthere is some acsii letter here有时候,单个邮件消息会有多个 received:头部,有的还会有一个较复杂的return-path:头部。这是因为邮件消息在从发送者的主机到接收者的主机的传送过程中,可能会被转发到不止一个 smtp 服务器。例如,如果 bob 指示他在主机 上的邮件服务器把他的所有邮件转发到主机 ,那么他通过其用户代理看到的邮件消息可能以大体如下的两行开头:received: from by ; 18 oct 2007 09:55:37 gmtreceived:

46、 from by ; 18 oct 2007 09:53:37 gmt武汉工程大学邮电与信息工程学院毕业设计(论文)13这些头部给接收用户代理提供了相应邮件消息访问过的 smtp 服务器及访问时间的踪迹。smtp 规范所在的 rfc 822 详细定义丁 received:头部的语法。第第 3 章章 电子邮件软件的总体设计电子邮件软件的总体设计3.1 系统总体设计系统总体设计利用 c#实现电子邮件的接收和发送,电子邮件软件共分为服务器端和客户端两部分,服务器端程序主要负责侦听客户端发来的邮件,客户端需登录到服务端才可以实现正常的接收和发送邮件功能14。3.1.1 性能设计性能设计(

47、1) 稳定性软件最重要的性能就是它的稳定性。本软件在 windows 操作系统下使用 c#软件进行编写,保证的平台的稳定性。客户端对邮件的所有处理都是在网络连接建立之前进行的,在发送邮件时只是简单的从文件中读取并发送,无需对邮件进行任何处理。这样简化了发送过程,缩短了网络连接时间,避免了发送邮件时要解决邮件格式和内容错误的问题,减少了网络出错的机率。而服务器将收取到的邮件存储在本地硬盘临时文件夹中,只有在邮件投递到用户的邮箱、成功转发或在指定次数内无法转发的情况下才删除,这就保证了邮件不会丢失。(2) 兼容性smtp 电子邮件系统应该与目前广泛使用的各种客户端软件及邮件服务器系统相兼容。具体的

48、要求是:smtp 客户端发送的邮件应该可以被其他邮件客户端软件解析并正确显示;武汉工程大学邮电与信息工程学院毕业设计(论文)14smtp 客户端可以向现在被广泛使用的邮件服务器发送邮件;smtp 服务器可以接收任何客户端发送的邮件;smtp 服务器能够将邮件正确投递或者将收件人不是本地用户的邮件转发给目的服务器。(3)自主设计和开发在 smtp 电子邮件系统的开发过程中,自主设计并实现系统的主要部分。只有部分模块的实现细节,如从注册表中读取网络信息门、取得文件的完全地址等,借鉴了他人的方法,系统的重要程序结构设计和代码编写都是自己完成。由于对系统了解深刻,十分方便对系统进行管理和调试。而且由于

49、系统是自主开发的,教研室的其他人也可以以本系统为基础作进一步的开发和研究。(4)易于维护及修改smtp 电子邮件系统除了客户端的界面部分使用了 mfc 编程外,其余所有程序都是使用 c#编写并采用了模块化设计思路。每个功能设计成独立的模块进行编写程序,模块之间关联性很小,系统的整体设计简洁、清晰。这使得软件有良好的可读性和可移植性,特别是方便了以后对软件进行修改、维护和升级,即使要改变或增减系统的15。3.1.2 系统总体框架系统总体框架电子邮件系统可分为客户端和服务器两部分,根据邮件在传输时使用的协议它们又分别可以分为 smtp 和 pop3。首先由smtp客户端编写并发送邮件;smtp服务

50、器接收到邮件后根据收件人是否是本地用户进行分发。如果是本地用户,则将邮件直接投递到用户邮箱中;如果是远程邮箱,则将邮件转发到收件人所在的服务器上;最后收件人通过pop3客户端经过pop3服务器,把邮件从服务器上的邮箱中取到本地主机上进行解析和显示。电子邮件服务器的用户名、密码以及其它参数(如每个邮箱的最大存储空间、每封信的大小等)都是通过管理服务器进行管理的16。1.电子邮件系统的整体框架结构见图电子邮件系统的整体框架结构见图3.1所示所示武汉工程大学邮电与信息工程学院毕业设计(论文)15pop3 服务器转发服务器smtp 接收服务器用户邮箱smtp 客户端pop3 客户端管理服务器其他电子邮

51、件服务器管理员图图 3.13.1 电子邮件系统整体框架图电子邮件系统整体框架图2.软件的总体架构见图软件的总体架构见图 3.2 所示所示主要功能选择用户主界面发送邮件类 接收邮件类图图 3.23.2 软件架构图软件架构图3.系统总体见图系统总体见图 3.3 所示所示武汉工程大学邮电与信息工程学院毕业设计(论文)16用户新建账号发送邮件接收邮件纯文本邮件带附件邮件图图 3.3 系统总体图系统总体图3.2 客户端的设计客户端的设计电子邮件与普通邮件有类似的地方,发信者注明收件人的姓名与地址(即邮件地址) ,发送方服务器把邮件传到收件方服务器,收件方服务器再把邮件发到收件人的邮箱中17。3.2.1

52、功能设计功能设计电子邮件客户端肩负着电子邮件系统与用户交互邮件信息的重任,它是电子邮件系统中 mu 人(用户代理)部分。完整的电子邮件客户端应至少具备对邮件进行编写、传输、收取、阅读这几个基本功能。由于电子邮件的大部分使用者为非计算机专业人员,对电子邮件的原理并不了解,这就要求电子邮件客户端应该具有易于用户操作的界面,帮助用户进行邮件的编写和阅读,并且对邮件的具体处理(如生成标准格式的邮件、发送邮件、接收邮件、提取邮件信息等)操作应放在后台处理。客户端的整体框架见图 3.4 所示。它根据功能可分为两部分:smtp 客户端和pop3 客户端。smtp 客户端是客户端中编辑、发送邮件部分,用户通过

53、界面输入邮件信息后,smtp 客户端根据邮件信息生成标准格式的邮件,并发送到武汉工程大学邮电与信息工程学院毕业设计(论文)17smtp 服务器上;pop3 客户端实现邮件的接收和读取显示功能。本文主要设计与实现 smtp 客户端,除了能够编写、发送基本的邮件外,还支持下面的功能:(1) 实现 emmtp 命令,支持 login 机制的 smtp 认证扩展;(2) 支持包含多媒体文件类型附件的 miem 邮件,可以在邮件正文和邮件头中使用中文简体字集;(3) 能够对邮件体进行 quoted-pirntable 或 base64 方式编码;(4) 具有友好的人机界面,使用户对客户端的操作方便、快捷

54、。pop3 客户端退出客户端发送/接收邮件smtp 客户端开始返回发送取消接收返回图图 3.4 客户端整体框架图客户端整体框架图3.2.2 流程图流程图根据模块化设计思想,按照 smtp 客户端的不同功能将其分为检查邮件信息完整性、生成标准格式的邮件和发送邮件这三部分。smtp 客户端的基本流程图见图 3.5 所示。武汉工程大学邮电与信息工程学院毕业设计(论文)18smtp 客户端写邮件从界面获得邮件信息检查邮件信息是否完整生成邮件头和邮件体存储邮件发送邮件删除临时文件退出 smtp 客户端失败yn图图 3.5 smtp 客户端流程图客户端流程图每部分的基本功能如下:(1)写邮件:在编写邮件界

55、面用户按要求填写邮件正文、附件及其它必须的信息;武汉工程大学邮电与信息工程学院毕业设计(论文)19(2)从界面获取邮件信息:调用 mfc 的函数将界面中的内容存储到结构体中以便程序中使用;(3)检查邮件信息完整性:检查从界面读取的信息中是否包括全部的发送邮件必备信息;(4)生成标准邮件:根据得到的邮件信息编写邮件头及邮件体各部分的头信息,并对需要编码的邮件体进行编码,然后将这些内容按照 rfc822 和 mime 的规定的格式并存入临时文件中;(5)发送邮件:使用 smtp 协议将邮件发送到服务器上。如果发送过程出现错误,则提示用户错误信息并返回编写邮件界面。3.3 服务器的设计服务器的设计3

56、.3.1 结构设计结构设计最简单的服务器结构是单线程结构,这种结构下服务器只有处理完上一个请求后才会接受新的请求。这种结构实现起来非常简单,但在实际中是不可行的,因为 email 服务器可能会同时收到多个请求,并且有的请求的处理时间会较长,顺序处理会导致请求等待时间过长,所以 email 服务器必须使用并发处理结构。服务器的并发处理结构可分为两类:多进程与多线程。每个进程可以包括多个线程,多个线程之间的数据可以很容易的进行共享;创建线程比创建进程的开销要小,并且线程间的切换也要比进程间的切换开销要小。由于本邮件服务器主要使用在局域网内部或中小型办公环境,用户较少、发送邮件的频率也不是很高;并且

57、服务器不是安放在专门的邮件服务器主机上,主机还要同时运行其它程序和服务器,因此要求邮件服务器占用尽量少的资源就可以实现基本功能。基于上述原因,本邮件服务器选用单进程多线程结构。电子邮件服务器启动后就会为每个功能建立一个线程,这些线程分别执行smtp 接收服务器、pops 服务器、转发服务器和管理服务器的功能18。smtp 接收服务器在其主线程监听连接请求,然后为每一个请求建立一个线程,请求处理结束后,释放线程。这个结构的好处在于主程序的设计比较简单、武汉工程大学邮电与信息工程学院毕业设计(论文)20稳定;同时因为每个线程结束时,都会释放它所占用的资源,不用担心子线程的内存泄漏, 。由于每个子线

58、程都是独立、并行处理的,一个线程的传输阻塞并不会影响其它线程的通信。转发服务器在建立线程后,每间隔一定时间将转发队列中的所有邮件进行转发。3.3.2 功能设计功能设计smtp 邮件服务器负责整个邮件的传递过程。它包括 smtp 服务器和转发服务器两部分,实现邮件的接收、投递和转发功能。(1)完整实现 smtp 接收服务,可以从通用的客户端软件接收邮件;(2)实现 smtp 的扩展服务,对客户端连接进行 login 机制用户认证扩展;(3)生成标准邮件:根据得到的邮件信息编写邮件头及邮件体各部分的头信息,并对需要编码的邮件体进行编码,然后将这些内容按照 rfc822 和 mime 的规定的格式并

59、存入临时文件中;(4)发送邮件使用 smtp 协议将邮件发送到服务器上。如果发送过程出现错误,则提示用户错误信息并返回编写邮件界面。3.3.3 流程图流程图smtp 接收服务器实现从发送端接收邮件并进行首次分发的功能,转发服务器则对首次转发不成功的邮件进行处理。图 3.6 为 smtp 接收服务器的流程图,而图 3.7 为转发服务器的流程图,图 3.8 为程序功能图。武汉工程大学邮电与信息工程学院毕业设计(论文)21建立线程与发送端建立连接接收邮件判断收件人投递到用户的本地邮箱转发邮件加入转发队列退出线程是否转发成功本地用户远端用户否是图图 3.6 smtp 接收服务器流程图接收服务器流程图武汉工程大学邮电与信息工程学院毕业设计(论文)22转发服务器线程等待 30 分钟到达转发队列尾转发邮件所有人都已转发所有人都转发成功邮件已经转发十次回复发件人不成功的邮件从队列中删除邮件是否是是否否是图图 3.7 转发服务器流程图转发服务器流程图武汉工程大学邮电与信息工程学院毕业设计(论文)23客户端软件电子邮件接收系统电子邮件接收系统附加功能各种错误的提示简单邮件接收带有附件的邮件接收简单邮件发送带有附件的邮件发送电子邮件编写电子邮件的分类管理通讯簿管理图图 3.8 程序功能图程序功能图3.4 建立网络连接建立网络连接smtp 采用客户端/服务器工作模式,客户端与服务器之间建立一条 tcp

温馨提示

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

评论

0/150

提交评论