预览加载中,请您耐心等待几秒...
1/10
2/10
3/10
4/10
5/10
6/10
7/10
8/10
9/10
10/10

亲,该文档总共71页,到这已经超出免费预览范围,如果喜欢就直接下载吧~

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

第9章电子邮件协议与编程 本章首先介绍电子邮件系统的构成和工作原理,然后分析简单邮件传送协议SMTP,接着叙述RFC822规定的纯文本电子邮件信件的格式,详细说明了MIME多媒体邮件格式扩展,分析了接收电子邮件的POP3邮局协议,最后给出了两个编程实例。通过本章的学习,应当充分认识应用层协议在网络编程中的重要性,可以说,网络编程就是应用层协议的实现。9.1电子邮件系统的工作原理 9.1.1电子邮件的特点 电子邮件(electronicmail,简称e-mail)是因特网上使用最多的一种应用,它为用户在因特网上设立了存放邮件的电子邮箱,发信人可以随时将电子邮件发送到收信人的电子邮箱,收信人也可以随时上网读取,发信人与收信人以异步的方式通信。9.1.2电子邮件系统的构成 一个电子邮件系统包括三个主要的构件,即用户代理,邮件消息传输代理,和电子邮件使用的协议。如图9.1所示:9.1.3电子邮件系统的实现从以上的分析可以了解电子邮件系统的特点: ①是一种异步的通信系统,不像电话,通话的双方都必须在场。 ②使用方便,传输迅速,费用低廉,不仅能传输文字信息,还能附上声音和图像。 ③在电子邮件系统的实现中,ISP的服务器必须7X24小时地不间断地运行,这样才能保证用户可以随时发送和接收信件,而发送或接收电子邮件的用户则随意。9.2简单邮件传送协议SMTP 9.2.1概述 简单邮件传送协议SMTP(SimpleMailTransferProtocol)是因特网的正式标准,最初在1982年由RFC821规定,目前它的最高版本是RFC2821。 SMTP协议采用C/S模式,专用于电子邮件的发送,规定了发信人把邮件发送到收信人的电子邮箱的全过程中,SMTP客户与SMTP服务器这两个相互通信的进程之间应如何交换信息。即规定了SMTP的会话过程。用户直接使用的是用于编写和发送的客户端软件,而通常的SMTP服务器运行在远程站点上。客户/服务器之间的通信是通过TCP/IP协议进行的。9.2.2SMTP客户与SMTP服务器之间的会话 1.SMTP会话 如图9.3,说明了SMTP客户与SMTP服务器之间的会话2.SMTP命令 一般是客户主动,首先发送。SMTP客户发往SMTP服务器的信息称为SMTP命令。在RFC821中,SMTP协议规定了14种命令。 SMTP命令的一般的格式是: 命令关键字参数<CRLF> 其中,命令关键字一般是四个字母,是一个英文动词的缩写。参数随命令而异,命令应当以回车换行符结束。 比如HELOWANG<CRLF>3.SMTP应答 SMTP服务器收到命令后,返回给SMTP客户的信息,称为SMTP应答。客户每次发送一条SMTP命令后,服务器给客户返回一条响应。SMTP规定了23种响应码。 SMTP应答都是以一个响应码开头,后面接着响应的描述信息,如果SMTP服务器不一样,响应的描述信息可能不一样,SMTP应答的一般格式是: 响应码响应的文本描述信息 其中,响应码为3位数字,与描述信息文本之间有一个空格,9.2.3常用的SMTP命令 1.SMTP客户问候SMTP服务器 命令格式:HELO发送方的主机名<CRLF> 2.邮件来自何处,说明发信人的电子邮件地址 命令格式:MAILFROM:发信人的电子邮件地址<CRLF> 3.说明收信人的电子邮件地址 命令格式:RCPTTO:收信人的电子邮箱地址<CRLF> 4.请求发送邮件内容 命令格式:DATA<CRLF>5.空操作 命令格式:NOOP<CRLF> 6.验证电子信箱是否合法 命令格式:VRFY电子信箱地址<CRLF> 7.复位SMTP服务器 命令格式:RSET<CRLF> 8.请求服务器发回帮助信息 命令格式:HELP<CRLF>或者HELP命令关键字<CRLF> 9.退出会话 命令格式:QUIT<CRLF>9.2.4常用的SMTP响应码 211系统状态或系统帮助应答。 214帮助信息 220服务就绪。 221服务器关闭传输通道。 250请求的邮件操作已经完成。 251用户不是本地的,将按照前向路径(forwaed-path)转发。 354启动邮件输入,要求邮件文本要用两个<CRLF>结束。 421服务不可使用,关闭传输通道。 450没有执行请求的邮箱操作,因为信箱不可用。451请求的操作已经终止,因为在处理的过程中出现了错误。 452请求的操作没有发生,因为系统的存储空间不够, 500语法错误,命令不可识别。 501参数或变元中存在着语法错误。 502命令不能实现。 503错误的命令序列 504命令的参数不能实现。 550请求的操作不能发生,信箱不可用。 551用户不在本地,请尝试发送到前向路径(forwaed-path)。 552请求的邮件操作终止,超出存储分配。 553请求的操作不能执