电子邮件系统的设计与开发样本Word文档格式.docx
- 文档编号:17522066
- 上传时间:2022-12-07
- 格式:DOCX
- 页数:28
- 大小:200.78KB
电子邮件系统的设计与开发样本Word文档格式.docx
《电子邮件系统的设计与开发样本Word文档格式.docx》由会员分享,可在线阅读,更多相关《电子邮件系统的设计与开发样本Word文档格式.docx(28页珍藏版)》请在冰豆网上搜索。
可见,电子邮件与人们工作、学习和生活息息有关,它已经深深融入到每个人生活中,生活在这个网络时代人是不也许没有电子邮箱。
电子邮箱已经由此前科技工作者用于科技信息交流转变到当前大多数人用来进行寻常生活工作学习交流工具。
同步,电子邮箱功能也发生了翻天覆地变化。
由本来只能收发文本到当前收发多媒体文献。
简化邮件编码,减少编码导致数据冗余。
这些都得宜于与电子邮箱关于网络合同发展和关于硬件改进。
当前咱们每天都习惯于通过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之间会话是靠发送SMTPSMTP命令和接受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命令退出。
下面通过一种实例,从发送邮件到来更详细直观地描述此会话流程:
(S;
SENDERR:
RECIEVOR)
s:
建立连接
R:
220SimpleMailTransferServiceReady
S:
HELLO//客户端发出HELLO命令以标记发件人自己身份
250
<>//客户端发送MAIL命令
250OK//250规定邮件操作完毕
<>//发送RCPT命令来标记电子邮件收件人,在这里可以有各种RCPT行
250OK//250服务器端则表达与否乐意为收件人接受该邮件
DATA//命令DATA将邮件发送出去
354Startmailinput;
endwith"
<CRLF>.<CRLF>"
S:
Blahblahblah...
...等等
<
CRLF>
.<
250OK
QUIT
221Serviceclosingtransmissionchannel
2.2POP3合同
2.2.1POP3合同用于电邮接受工作模式和原理
POP全称是PostOfficeProtocol,即邮局合同,用于电子邮件接受,它使用TCP110端口。
当前惯用是第三版,因此简称为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)(例如),以及邮箱账号和密码。
当咱们按下电子邮件软件中收取键后,电子邮件软件一方面会调用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结束任何字符。
例如,它可以是:
+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;
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响应外,其他命令响应均为"
和"
。
响应后所有文本将被客户略去。
2.2.2POP3会话流程
等待连接到TCP端口110>
C:
打开连接>
USERusername
+OK
PASSpassword
STAT//祈求服务器发回关于邮箱记录资料,如邮件总数和总字节数
+OK2320
LIST//返回邮件数量和每个邮件大小
+OK2messages(320octets)
1120
2200
….
RETR1//回由参数标记邮件所有文本
+OK..
服务器发送信件1>
……
DELE1
+OKmessage1deleted
+OKdeweyPOP3serversigningoff(maildropempty)
关闭连接>
等待下一次连接>
2.3RFC822简介
电子邮件是全世界通用。
你可以给任何一种人发送电子邮件而不用考虑她所处地理位置在哪或她使用是什么软件作为邮件接受客户端。
和其她与Internet有关事物同样(或者可以说,与计算机技术有关事物),电子邮件也是基于一种原则,而人们把这个特殊原则称作RFC822。
这个原则早在二十近年前(精确日期是一九八二年八月十三日)就发布于世,在这期间它基本没有变化。
在发布RFC2822原则取代了RFC822,但是它基本内容和RFC822是完全一致,只是做了某些很小更新和改动。
而其她某些邮件原则,例如RFC850(在USENET上使用),同样也基于RFC822原则。
(RFC,RequestForComments)
2.4Winsock简介
许多网络程序都是采用Socket套接字实现,对于某些原则网络合同如HTTP、FTP和SMTP等合同编程也是基于套接字程序,只是端标语不再是随意设定而要由合同来指定,例如HTTP端口在80、FTP是21,而SMTP则是25。
Socket只是提供在指定端口上同指定服务器从事网络上通讯能力,至于客户和服务器之间是如何通讯则由网络合同来规定,这对于套接字是完全透明。
因而可以由Socket套接字为SMTP提供网络通讯基本,而对于网络通讯连路建立好之后采用什么样通讯应答则要按SMTP合同规定去执行了。
本科题为以便起见,没有采用编写较复杂WindowsSocketsAPI进行编程,而是使用通过较好封装MFCCSocket类。
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合同命令,然后对这些命令进行解析,依照不同命令进行不同解决,解决完毕之后,将成果发送给客户端。
图要作阐明
图3-1Client/Server工作模式示意图
如下用简朴流程图来分别示范SMTP,POP3服务器端与她们相应客户端会话:
图3-2SMTP会话流程示意图
如图示,连接和发送过程如下:
f.结束本次发送
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 电子邮件 系统 设计 开发 样本