电子邮件系统的设计与开发.docx

上传人:b****2 文档编号:2938949 上传时间:2023-05-05 格式:DOCX 页数:34 大小:201.53KB
下载 相关 举报
电子邮件系统的设计与开发.docx_第1页
第1页 / 共34页
电子邮件系统的设计与开发.docx_第2页
第2页 / 共34页
电子邮件系统的设计与开发.docx_第3页
第3页 / 共34页
电子邮件系统的设计与开发.docx_第4页
第4页 / 共34页
电子邮件系统的设计与开发.docx_第5页
第5页 / 共34页
电子邮件系统的设计与开发.docx_第6页
第6页 / 共34页
电子邮件系统的设计与开发.docx_第7页
第7页 / 共34页
电子邮件系统的设计与开发.docx_第8页
第8页 / 共34页
电子邮件系统的设计与开发.docx_第9页
第9页 / 共34页
电子邮件系统的设计与开发.docx_第10页
第10页 / 共34页
电子邮件系统的设计与开发.docx_第11页
第11页 / 共34页
电子邮件系统的设计与开发.docx_第12页
第12页 / 共34页
电子邮件系统的设计与开发.docx_第13页
第13页 / 共34页
电子邮件系统的设计与开发.docx_第14页
第14页 / 共34页
电子邮件系统的设计与开发.docx_第15页
第15页 / 共34页
电子邮件系统的设计与开发.docx_第16页
第16页 / 共34页
电子邮件系统的设计与开发.docx_第17页
第17页 / 共34页
电子邮件系统的设计与开发.docx_第18页
第18页 / 共34页
电子邮件系统的设计与开发.docx_第19页
第19页 / 共34页
电子邮件系统的设计与开发.docx_第20页
第20页 / 共34页
亲,该文档总共34页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

电子邮件系统的设计与开发.docx

《电子邮件系统的设计与开发.docx》由会员分享,可在线阅读,更多相关《电子邮件系统的设计与开发.docx(34页珍藏版)》请在冰点文库上搜索。

电子邮件系统的设计与开发.docx

电子邮件系统的设计与开发

电子邮件系统的设计与开发

毕业论文

题目:

 电子邮件系统的设计与开发

院部

信息学院

专业班级

运算机科学与技术04级7班

届次

2008届

学生姓名

李康男

学号

2004160839

指导教师

姜红花

 

二○○八年六月

 

中英文摘要

第一章电子邮件的进展背景和意义

电子邮件翻译自英文的E-mail,它表示通过电子通讯系统进行信件的书写、发送和接收。

30多年前,人们发明了电子邮件这种便利的信息传递方式,这是人类通信历史上的一次革命。

电子邮件的兴起是在20世纪80年代,70年代的沉静要紧是因为当时使用Arpanet网络的人太少,网络的速度也仅为目前56Kbps标准速度的二十分之一。

受网络速度的限制,那时的用户只能发送些简单的信息,全然无法象现在如此发送大量照片;到80年代中期,个人电脑兴起,电子邮件开始在电脑迷以及大学生中广泛传播开来;到90年代中期,随着运算机技术的进展,显现了功能强大的Internet。

在Internet众多的服务功能中,电子邮件E-mail确实是其强大功能中的一个。

自此,电子邮件被广为使用。

今天使用的最多的通讯系统是互联网,同时电子邮件也是互联网上最受欢迎的功能之一。

通过电子邮件系统,您能够用专门低廉的价格,以专门快速的方式,与世界上任何一个角落的网络用户联络系,这些电子邮件能够是文字、图象、声音等各种方式。

同时,您能够得到大量免费的新闻、专题邮件,并实现轻松的信息搜索。

这是任何传统的方式也无法相比的。

正是由于电子邮件的使用简易、投递迅速、收费低廉,易于储存、全球畅通无阻,使得电子邮件被广泛地应用,它使人们的交流方式得到了极大的改变。

随着网络越来越普及,现在差不多是人人一个电子邮箱甚至有多个电子邮箱。

在Internet上使用最多的服务当属电子邮件服务了。

可见,电子邮件与人们的工作、学习和生活息息相关,它差不多深深的融入到每个人的生活中,生活在那个网络时代的人是不可能没有电子邮箱的。

电子邮箱差不多由往常科技工作者用于科技信息交流转变到现在大多数人用来进行日常生活工作学习的交流工具。

同时,电子邮箱的功能也发生了翻天覆地的变化。

由原先只能收发文本到现在的收发多媒体文件。

简化邮件的编码,减少编码造成的数据冗余。

这些都得宜于与电子邮箱有关的网络协议的进展和有关硬件的改进。

现在我们每天都适应于通过E-mail进行交流,各大网站也几乎都推出了自己的基于WEB的免费邮件系统。

电子邮件已无可争议的地成为互联网上最受用户欢迎的服务。

邮件的安全也逐步受到人们的重视。

至今已显现了各种安全保证措施来加强E-mail的安全性。

随着电子邮件服务的完善和安全性的不断提高。

电子邮件毫无疑问将在人类的通信史上占有一席之地。

如同其他的网络服务,电子邮件系统也有其使用的传输协议,包括SMTP(SimpleMailTransferProtocol,简单邮件传输协议)、POP(PostOfficeProtocol,邮局协议)和IMAP(InternetMessageAccessProtocal)消息访问协议)等,这些协议应用于电子邮件的发送和接收。

一些邮件处理软件如OutLookExpress和FoxMail等确实是按照SMTP和POP3协议结合WindowsSockets套接字进行设计来收发邮件的。

第二章电子邮件收发原理及相关技术

本章简单介绍了SMTP协议,POP3协议的工作原理。

只有较深入的把握了这两个协议的要紧内容,才能明白得基于SMTP,POP3的邮件收发系统是如何样工作。

2.1SMTP协议简介

2.1.1SMTP协议原始命令码和工作原理

  SMTP(SimpleMailTransferProtocol)即简单邮件传输协议,它是一组用于由源地址到目的地址传送邮件的规则,或者说是由它来操纵信件传输的一种中转方式。

SMTP协议属于TCP/IP协议族,它关心每台运算机在发送或中转信件时找到下一个目的地。

通过SMTP协议所指定的服务器,我们就能够把Email寄到收信人的服务器上了,整个过程只要几分钟。

SMTP服务器则是遵循SMTP协议的发送邮件服务器,用来发送或中转电子邮件。

(1)SMTP协议的通信模型

第一针对用户发出的邮件要求,由发送SMTP建立一条连接到接收SMTP的双工通讯链路,那个地点的接收SMTP是相关于发送SMTP而言的,实际上它既能够是最终的接收者也能够是中间传送者。

发送SMTP负责向接收SMTP发送SMTP命令,而接收SMTP则负责接收并反馈应答。

 

SMTP命令

邮件内容

应答

图2-1SMTP协议通信模型示意图

(2)SMTP协议的命令和应答

  从前面的通讯模型能够看出SMTP协议在发送SMTP和接收SMTP之间的会话是靠发送SMTP的SMTP命令和接收SMTP反馈的应答来完成的。

在通讯链路建立后,发送SMTP发送MAILFROM:

命令指令邮件发送者,若接收SMTP现在能够接收邮件则作出OK的应答,然后发送SMTP连续发出RCPT命令以确认邮件是否收到,假如接收到就作出OK的应答,否则就发出拒绝接收应答,但这并可不能对整个邮件操作造成阻碍。

双方如此反复多次,直至邮件处理完毕。

SMTP协议共包含10个SMTP命令,列表如下:

-------------------------------------------------------------------------------表2-1SMTP命令命令说明

-------------------------------------------------------------------------------

HELLO<domain><CRLF>识别发送方到接收SMTP的一个HELLO命令

MAILFROM:

<reverse-path><CRLF><reverse-path>为发送者地址。

此命令告诉接收方一个新邮件发送的开始并对所有的状态和缓冲区进行初始化。

此命令开始一个邮件传输处理最终完成将邮件数据传送到一个或多个邮箱中。

RCPTTO:

<forward-path><CRLF>标识各个邮件接收者的地址

DATA<CRLF>接收SMTP将把其后的行为看作邮件数据去处理,以<CRLF>.<CRLF>标识数据的结尾。

REST<CRLF>退出/复位当前的邮件传输

NOOP<CRLF>要求接收SMTP仅做OK应答。

(用于测试)

QUIT<CRLF>要求接收SMTP返回一个OK应答并关闭传输。

VRFY<string><CRLF>验证指定的邮箱是否存在,由于安全因素,服务器多禁止此命令。

EXPN<string><CRLF>验证给定的邮箱列表是否存在,扩充邮箱列表,也常禁止使用。

HELP<CRLF>查询服务器支持什么命令

VRFY<CRLF>用于验证给定的用户邮箱是否存在,以及接收关于该用户的详细信息。

EXPN<CRLF>用于扩充邮件列表。

-------------------------------------------------------------------------------

注:

<CRLF>为回车、换行,ASCII码分别为13、10(十进制)。

-------------------------------------------------------------------------------

 MAIL FROM命令中指定的地址是称作 envelope from地址,不需要和发送者自己的地址是一致的。

RCPT TO 与之等同,指明的接收者地址称为envelope to地址,而与实际的to:

行是什么无关。

邮件被分为信封部分,信头部分和信体部分envelope from, envelope to 与message from:

 message to:

完全不相干。

evnelope是由服务器主机间SMTP后台提供的,而message from/to是由用户提供的。

有无冒号也是区别。

  SMTP协议的每一个命令都会返回一个应答码,应答码的每一个数字差不多上有特定含义的,如第一位数字为2时表示命令成功;为5表失败;3表没有完成。

一些较复杂的邮件程序利用该特点,第一检查应答码的首数字,并依照其值来决定下一步的动作。

下面将SMTP的应答码列表如下:

----------------------------------------------------------------

表2-2应答码说明

----------------------------------------------------------------

501参数格式错误

502命令不可实现

503错误的命令序列

504命令参数不可实现

211系统状态或系统关心响应

214关心信息

220<domain>服务就绪

221<domain>服务关闭

421<domain>服务未就绪,关闭传输信道

250要求的邮件操作完成

251用户非本地,将转发向<forward-path>

450要求的邮件操作未完成,邮箱不可用(例如,邮箱忙)

550要求的邮件操作未完成,邮箱不可用(例如,邮箱未找到,或不可访问)

451舍弃要求的操作;处理过程中出错

551用户非本地,请尝试<forward-path>

452系统储备不足,要求的操作未执行

552过量的储备分配,要求的操作未执行

553邮箱名不可用,要求的操作未执行

354开始邮件输入,以"."终止

554操作失败

(3)SMTP协议工作原理

SMTP协议规定的命令是以明文方式进行的。

SMTP工作在两种情形下:

一是电子邮件从客户机传输到服务器;二是从某一个服务器传输到另一个服务器。

SMTP是个要求/响应协议,命令和响应差不多上基于ASCII文本,并以CR和LF符终止。

响应包括一个表示返回状态的三位数字代码。

SMTP服务器在TCP协议25号端口监听连接要求。

连接和发送过程如下:

a.建立TCP连接

b.客户端发送HELO命令以标识发件人自己的身份,然后客户端发送MAIL命令服务器端正期望以OK作为响应,说明预备接收。

c.客户端发送RCPT命令,以标识该电子邮件的打算接收人,能够有多个RCPT行。

服务器端则表示是否情愿为收件人同意邮件。

d.协商终止,发送邮件,用命令DATA发送。

e.以.表示终止输入内容一起发送出去。

f.终止此次发送,用QUIT命令退出。

2.1.2SMTP协议的会话流程

  在进行程序设计之前有必要弄清SMTP协议的会话流程,事实上前面介绍的内容差不多能够大致勾勒出用SMTP发送邮件的框架了,关于一次一般的邮件发送,其过程大致为:

先建立TCP连接,随后客户端发出HELLO命令以标识发件人自己的身份,并连续由客户端发送MAIL命令,如服务器应答为"OK",可连续发送RCPT命令来标识电子邮件的收件人,在那个地点能够有多个RCPT行,而服务器端则表示是否情愿为收件人同意该邮件。

在双方协商终止后,用命令DATA将邮件发送出去,其中对表示终止的"."也一并发送出去。

随后终止本次发送过程,以QUIT命令退出。

下面通过一个实例,从langrui@sohu发送邮件到renping@sina来更详细直观地描述此会话流程:

(S;SENDERR:

RECIEVOR)

s:

建立连接

R:

220sinaSimpleMailTransferServiceReady

S:

HELLOsohu//客户端发出HELLO命令以标识发件人自己的身份

R:

250sina

S:

MAILFROM:

<langrui@sohu>//客户端发送MAIL命令

R:

250OK//250要求的邮件操作完成

S:

RCPTTO:

<renping@sina>//发送RCPT命令来标识电子邮件的收件人,在那个地点能够有多个RCPT行

R:

250OK//250服务器端则表示是否情愿为收件人同意该邮件

S:

DATA//命令DATA将邮件发送出去

R:

354Startmailinput;endwith"<CRLF>.<CRLF>"

S:

Blahblahblah...

S:

...等等

S:

.

R:

250OK

S:

QUIT

R:

221sinaServiceclosingtransmissionchannel

2.2POP3协议

2.2.1POP3协议用于电邮接收的工作模式和原理

POP的全称是PostOfficeProtocol,即邮局协议,用于电子邮件的接收,它使用TCP的110端口。

现在常用的是第三版,因此简称为POP3。

POP3仍采纳Client/Server工作模式,Client被称为客户端,Server是服务器端。

应用层协议建立在网络层协议之上,相应的软件会调用应用层的相应协议。

如当打开Foxmail那个邮件软件收取邮件时,Foxmail那个软件就会调用TCP/IP参考模型中的应用层协议-POP协议。

POP那个应用层的协议会指挥TCP协议,利用IP协议将一封大邮件拆分成若干个数据包在Internet上传送。

  

(1)POP3标准命令

那个协议只包含12个命令(其中有3个完全能够忽略它们的存在)。

这些命令被客户端运算机用来发送给远程服务器。

反过来,服务器返回给客户端运算机两个回应代码。

POP3命令由一个命令和一些参数组成。

所有命令以一个CRLF对终止。

命令和参数由可打印的ASCII字符组成,它们之间由空格间隔。

命令一样是三到四个字母,每个参数却可达40个字符长。

POP3服务器响应由一个状态码和一个可能跟有附加信息的命令组成。

不同服务器的回应会有所不同,但开头部分差不多上一样的所有响应也是由CRLF对终止。

现在有两种状态,"确定"("+OK")和"失败"("-ERR")。

------------------------------------------------------------------------

表2-3POP3标准命令

(2)POP工作原理简介

  下面简单介绍一下电子邮件软件收取电子邮件的过程,一样我们在电子邮件软件的账号属性上设置一个POP服务器的URL(UniformResourceLocator)(比如pop.163),以及邮箱的账号和密码。

当我们按下电子邮件软件中的收取键后,电子邮件软件第一会调用DNS(DomainNameServer)协议对POP服务器进行解析IP地址,当IP地址被解析出来后,邮件程序便开始使用TCP协议连接邮件服务器的110端口,因为POP服务器是比较忙的,因此在那个过程中我们相对要等比较长的时刻。

当邮件程序成功地连上POP服务器后,其先会使用USER命令将邮箱的账号传给POP服务器,然后再使用PASS命令将邮箱的账号传给服务器,当完成这一认证过程后,邮件程序使用STAT命令要求服务器返回邮箱的统计资料,比如邮件总数和邮件大小等,然后LIST便会列出服务器里邮件数量。

然后邮件程序就会使用RETR命令接收邮件,接收一封后便使用DELE命令将邮件服务器中的邮件置为删除状态。

当使用QUIT时,邮件服务器便会将置为删除标志的邮件给删了。

通俗地讲,邮件程序从服务器接收邮件,事实上确实是一个对话过程,POP协议确实是用于电子邮件的一门语言。

(3)POP3会话的3个状态

a."确认"状态

第一TCP连接由POP3客户打开,POP3服务器发送一个单行的确认。

那个消息能够是由CRLF终止的任何字符。

例如,它能够是:

   

S:

+OKPOP3serverready

  现在POP3会话就进入了"确认"状态。

现在,客户必须向服务器证明它的身份。

在此介绍两种可能的处理机制,一种是USER和PASS命令,另一种是在后面要介绍的APOP命令用USER和PASS命令进行确认过程,客户必须第一发送USER命令,假如POP3服务器以"确认"状态码响应,客户就能够发送PASS命令以完成确认,或者发送QUIT命令终止POP3会话。

假如POP3服务器返回"失败"状态码,客户能够再发送确认命令,或者发送QUIT命令。

  当客户发送了PASS命令后,服务器依照USER和PASS命令的附加信息决定是否承诺访问相应的储备邮件。

一旦服务器通过这些数据决定承诺客户访问储存邮件,服务器会在邮件上加上排它锁,以防止在进入"更新"状态前对邮件的改变。

假如成功获得了排它锁,服务器返回一个"确认"状态码。

会话进入"操作状态",同时没有任何邮件被标记为删除。

假如邮件因为某种缘故不能打开(例如,排它锁不能获得,客户不能访问相应的邮件或者邮件不能进行语法分析),服务器将返回"失败"状态码。

在返回"失败"状态码后,服务器会关闭连接。

假如服务器没有关闭连接,客户能够重新发送确认命令,重新开始,或者发送QUIT命令。

在服务器打开邮件后,它为每个消息指定一个消息号,并以八进制表示每个消息的长度。

第一个消息被指定为1,第二个消息被指定为2,以此类推,第N个消息被指定为N。

在POP3命令和响应中,因此的消息号和长度以十进制表示。

下面是在"确认"状态中可用的命令:

USERusername;PASSpassword;QUIT

 b."操作"状态

  一旦客户向服务器成功地确认了自己的身份,服务器将锁住并打开相应的邮件,这时POP3会话进入"操作"状态。

现在客户能够重复下面的POP3命令,关于每个命令服务器都会返回应答。

最后,客户发送QUIT命令,会话进入"更新"状态。

下面是在"操作"状态中可用的命令:

STAT;LISTmsg;RETRmsg;DELEmsg;NOOP;RSET;TOPmsgn;UIDL[msg]

c."更新"状态

  当客户在"操作"状态下发送QUIT命令后,会话进入"更新"状态。

(注意:

假如客户在"确认"状态下发送QUIT后,会话并不进入"更新"状态。

)假如会话因为QUIT命令以外的缘故中断,会话并不进入"更新"状态,也不从服务器中删除任何信件。

QUIT在"更新"状态有效。

;

可选的POP3命令:

APOPnamedigest在"确认"状态有效

TOPmsgn;UIDL[msg]在"操作"状态有效

注:

除了STAT,LIST和UIDL的响应外,其它命令的响应均为"+OK"和"-ERR"。

响应后的所有文本将被客户略去。

2.2.2POP3会话流程

S:

<等待连接到TCP端口110>

C:

<打开连接>

S:

+OKPOP3serverready

C:

USERusername

S:

+OK

C:

PASSpassword

S:

+OK

C:

STAT//要求服务器发回关于邮箱的统计资料,如邮件总数和总字节数

S:

+OK2320

C:

LIST//返回邮件数量和每个邮件的大小

S:

+OK2messages(320octets)

S:

1120

S:

2200

S:

….

C:

RETR1//回由参数标识的邮件的全部文本

S:

+OK..

S:

<服务器发送信件1>

S:

……

C:

DELE1

S:

+OKmessage1deleted

C:

QUIT

S:

+OKdeweyPOP3serversigningoff(maildropempty)

C:

<关闭连接>

S:

<等待下一次连接>

2.3RFC822简介

电子邮件是全世界通用的。

你能够给任何一个人发送电子邮件而不用考虑他所处的地理位置在哪或他使用的是什么软件作为邮件同意客户端。

和其他与Internet相关的事物一样(或者能够说,与运算机技术相关的事物),电子邮件也是基于一种标准的,而人们把那个专门的标准称作RFC822。

那个标准早在二十多年前(准确的日期是一九八二年八月十三日)就公布于世,在这期间它差不多没有改变。

在2001年公布的RFC2822标准取代了RFC822,然而它的差不多内容和RFC822是完全一致的,只是做了一些专门小的更新和改动。

而其他的一些邮件标准,比如RFC850(在USENET上使用),同样也基于RFC822标准。

(RFC,RequestForComments)

2.4Winsock简介

  许多网络程序差不多上采纳Socket套接字实现的,关于一些标准的网络协议如、FTP和SMTP等协议的编程也是基于套接字程序的,只是端口号不再是随意设定而要由协议来指定,比如端口在80、FTP是21,而SMTP则是25。

Socket只是提供在指定的端口上同指定的服务器从事网络上的通讯能力,至于客户和服务器之间是如何通讯的则由网络协议来规定,这关于套接字是完全透亮的。

因此能够由Socket套接字为SMTP提供网络通讯基础,而关于网络通讯连路建立好之后采取什么样的通讯应答则要按SMTP协议的规定去执行了。

本科题为方便起见,没有采纳编写较复杂的WindowsSocketsAPI进行编程,而是使用通过较好封装的MFC的CSocket类。

2.5MFC简介

MFC(MicrosoftFoundationClassLibrary)中的各种类结合起来构成了一个应用程序框架,它的目的确实是让程序员在此基础上来建立Windows下的应用程序,这是一种相对SDK来说更为简单的方法。

因为总体上,MFC框架定义了应用程序的轮廓,并提供了用户接口的标准实现方法,程序员所要做的确实是通过预定义的接口把具体应用程序特有的东西填入那个轮廓。

MicrosoftVisualC++提供了相应的工具来完成那个工作:

AppWizard能够用来生成初步的框架文件(代码和资源等);资源编辑器用于关心直观地设计用户接口;ClassWizard用来协助添加代码到框架文件;最后,编译,则通过类库实现了应用程序特定的逻辑。

MFC封装了Win32API,OLEAPI,ODBCAPI等底层函数的功能,并提供更高一层的接口,简化了Windows编程。

同时,MFC支持对底层API的直截了当调用。

MFC提供了一个Windows应用程序开发模式,对程序的操纵要紧是由MFC框架完成的,而且MFC也完成了大部分的功能,预定义或实现了许多事件和消息处理,等等。

框架或者由其本身处理事件,不依靠程序员的代码;或者调用程序员的代码来处理应用程序特定的事件。

MFC是C++类库,程序员确实是通过使用、继承和扩展适当的类来实现特定的目的。

例如,继承时,应用程序特定的事件由程序员的派生类来处理,不感爱好的由基类处理。

实现这种功能的基础是C++对继承的支持,对虚拟函数的支持,以及MFC实现的消息映射机制。

第三章电子邮件系统的设计和开发

本章第一对SMTP协议,POP3协议的工作流程作了详细的分析,然后按照SMTP和POP3协议结合WindowsSockets套接字进行设计实现代码并封装成CSMTP协议类和CPOP3协议类。

最后依照客户端的差不多需求设计成客户端邮件收发软件,并以友好的界面形式出现出来。

3.1服务器端作用简介

SMTP,POP3采纳Client/Server工作模式,Client被称为客户端,一样我们日常使用电脑差不多上作为客户端,而Server(服务器)则是网管人员进行治理的。

SMTP服务器的要紧功能确实是接收来自客户端的SMTP协议命令,然后对这些命令进行解析

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 表格模板 > 合同协议

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2