网络编程实用教程-第9章.ppt

上传人:牧羊曲112 文档编号:6335737 上传时间:2023-10-18 格式:PPT 页数:70 大小:811KB
返回 下载 相关 举报
网络编程实用教程-第9章.ppt_第1页
第1页 / 共70页
网络编程实用教程-第9章.ppt_第2页
第2页 / 共70页
网络编程实用教程-第9章.ppt_第3页
第3页 / 共70页
网络编程实用教程-第9章.ppt_第4页
第4页 / 共70页
网络编程实用教程-第9章.ppt_第5页
第5页 / 共70页
点击查看更多>>
资源描述

《网络编程实用教程-第9章.ppt》由会员分享,可在线阅读,更多相关《网络编程实用教程-第9章.ppt(70页珍藏版)》请在三一办公上搜索。

1、第9章 电子邮件协议与编程 本章首先介绍电子邮件系统的构成和工作原理,然后分析简单邮件传送协议SMTP,接着叙述RFC822规定的纯文本电子邮件信件的格式,详细说明了MIME多媒体邮件格式扩展,分析了接收电子邮件的POP3邮局协议,最后给出了两个编程实例。通过本章的学习,应当充分认识应用层协议在网络编程中的重要性,可以说,网络编程就是应用层协议的实现。,9.1 电子邮件系统的工作原理9.1.1 电子邮件的特点电子邮件(electronic mail,简称e-mail)是因特网上使用最多的一种应用,它为用户在因特网上设立了存放邮件的电子邮箱,发信人可以随时将电子邮件发送到收信人的电子邮箱,收信人

2、也可以随时上网读取,发信人与收信人以异步的方式通信。,9.1.2 电子邮件系统的构成一个电子邮件系统包括三个主要的构件,即用户代理,邮件消息传输代理,和电子邮件使用的协议。如图9.1所示:,图9.1 电子邮件系统的构成,9.1.3 电子邮件系统的实现,图9.2 电子邮件的发送与接收过程,从以上的分析可以了解电子邮件系统的特点:是一种异步的通信系统,不像电话,通话的双方都必须在场。使用方便,传输迅速,费用低廉,不仅能传输文字信息,还能附上声音和图像。在电子邮件系统的实现中,ISP的服务器必须7X24小时地不间断地运行,这样才能保证用户可以随时发送和接收信件,而发送或接收电子邮件的用户则随意。,9

3、.2 简单邮件传送协议SMTP9.2.1 概述 简单邮件传送协议SMTP(Simple Mail Transfer Protocol)是因特网的正式标准,最初在1982年由RFC821规定,目前它的最高版本是RFC2821。SMTP协议采用C/S模式,专用于电子邮件的发送,规定了发信人把邮件发送到收信人的电子邮箱的全过程中,SMTP客户与SMTP服务器这两个相互通信的进程之间应如何交换信息。即规定了SMTP的会话过程。用户直接使用的是用于编写和发送的客户端软件,而通常的SMTP服务器运行在远程站点上。客户/服务器之间的通信是通过TCP/IP协议进行的。,9.2.2 SMTP客户与SMTP服务器

4、之间的会话1SMTP会话如图9.3,说明了SMTP客户与SMTP服务器之间的会话,图9.3 SMTP客户与SMTP服务器之间的会话,2SMTP命令 一般是客户主动,首先发送。SMTP客户发往SMTP服务器的信息称为SMTP命令。在RFC821中,SMTP协议规定了14种命令。SMTP命令的一般的格式是:命令关键字 参数 其中,命令关键字一般是四个字母,是一个英文动词的缩写。参数随命令而异,命令应当以回车换行符结束。比如 HELO WANG,3SMTP应答 SMTP服务器收到命令后,返回给SMTP客户的信息,称为SMTP应答。客户每次发送一条SMTP命令后,服务器给客户返回一条响应。SMTP规定

5、了23种响应码。SMTP应答都是以一个响应码开头,后面接着响应的描述信息,如果SMTP服务器不一样,响应的描述信息可能不一样,SMTP应答的一般格式是:响应码 响应的文本描述信息 其中,响应码为3位数字,与描述信息文本之间有一个空格,,9.2.3 常用的SMTP命令1SMTP客户问候SMTP服务器命令格式:HELO 发送方的主机名 2邮件来自何处,说明发信人的电子邮件地址命令格式:MAIL FROM:发信人的电子邮件地址 3说明收信人的电子邮件地址命令格式:RCPT TO:收信人的电子邮箱地址 4请求发送邮件内容 命令格式:DATA,5空操作命令格式:NOOP 6验证电子信箱是否合法命令格式:

6、VRFY 电子信箱地址 7复位SMTP服务器命令格式:RSET 8请求服务器发回帮助信息命令格式:HELP 或者 HELP 命令关键字 9退出会话命令格式:QUIT,9.2.4 常用的SMTP响应码211 系统状态或系统帮助应答。214 帮助信息220 服务就绪。221 服务器关闭传输通道。250 请求的邮件操作已经完成。251 用户不是本地的,将按照前向路径(forwaed-path)转发。354 启动邮件输入,要求邮件文本要用两个结束。421 服务不可使用,关闭传输通道。450 没有执行请求的邮箱操作,因为信箱不可用。,451 请求的操作已经终止,因为在处理的过程中出现了错误。452 请求

7、的操作没有发生,因为系统的存储空间不够,500 语法错误,命令不可识别。501 参数或变元中存在着语法错误。502 命令不能实现。503 错误的命令序列504 命令的参数不能实现。550 请求的操作不能发生,信箱不可用。551 用户不在本地,请尝试发送到前向路径(forwaed-path)。552 请求的邮件操作终止,超出存储分配。553 请求的操作不能执行,因为信箱语法错误。554 事务失败。,9.2.5 SMTP的会话过程SMTP客户与SMTP服务器的会话过程分为三个阶段,先举例说明。以下每行前面的C代表SMTP客户发送的命令,S代表服务器发回的响应。每行/后面的内容是注释。C:HELO

8、YE/你好!我是YE。S:,nice to meet you/你好!YE,很高兴见到你,有事吗?C:MAIL FROM:/我想发信,我的地址是。S:250,Sender,accepted/行!有信你就发吧。,/我的信要发给。C:/行!已经准备好。S:250,Recipient ok C:DATA/我要发信件的内容了。/发吧!结尾标志是两个回车换行符夹个英文句点。S:354 Enter mail,end with.C:(客户端按照电子邮件的格式发送邮件内容)/我的信已经发完了C:(邮件内容发送完毕,发送结束标志crlf&.&crlf)/好的,你的信已经存储了。S:250 ok,message s

9、aved C:QUIT/再见S:221 See you in cyberspace/再见,在上面的对话过程中,粗体字部分是发送邮件的客户端软件发送的内容,其他部分是SMTP服务器的应答内容。从中可以明显看出SMTP会话具有以下特点:(1)会话的过程采用交互式的请求应答模式,客户发送命令,服务器回送应答。(2)客户发送的命令和服务器回送的应答都是纯文本形式,有一定格式。(3)针对客户的每个命令,服务器总要返回一定的响应码,表示服务器是否接受或执行了客户端命令。(4)会话过程有一定的顺序,9.2.6 使用Winsock来实现电子邮件客户与服务器的会话(1)启动SMTP服务器,在指定的传输层端口监听

10、客户端的连接请求,为SMTP服务器保留的端口是25。(2)客户端设置Winsock连接的IP地址或域名,指定端口号,主动发出连接请求,连接到SMTP服务器。比如,网易的SMTP服务器的域名是,监听端口是25。(3)服务器接收客户端的连接请求,并发回响应。客户端应收到类似220 BigFox ESMTP service ready这样的信息,这就说明客户端已经与服务器建立TCP/IP连接,成功地实现了第一步。,(4)客户端和服务器分别向对方发送数据。(5)客户端或服务器分别读取自己缓冲区中的数据。(6)以上两步是SMTP会话的主要部分,要按照SMTP协议的规定,按照一定顺序,客户向服务器发送命令

11、,服务器向客户发送应答,以上两步要多次重复。(7)会话完毕,关闭客户端和服务器之间的连接。,9.3 电子邮件信件结构详述9.3.1 Internet文本信件的格式标准-RFC822 在电子邮件系统的环境中,电子邮件信件是它传递的对象。最早规定电子邮件信件内容结构的标准是在1982发表的,称作RFC822,至今它仍然是Internet上电子邮件信件的当前标准。RFC822定义了信件从主机传递到主机时需要的格式化方式。它的主要用途是为信件提供规范化的格式,使不同类型的网络可以相互传递电子邮件。该标准的最新文本是RFC2822。,RFC822规定,电子邮件信件的内容全部由ASCII字符组成,就是通常

12、所说的文本文件,从组织上看,RFC822将信件内容结构分为信头和信体两大部分,中间用一个空白行。对于一行的字符数,有一个1000/80的限制规则。对于信件的行数,RFC822没有特别的限制,,下面是一个电子邮件信件内容文本的实例,可以大致说明头部行的形式,头部的行由关键字和冒号开始,头部和正文部分由空行分隔开。From:Date:Fri,1 Jan 99 10:21:32 ESTSubject:lunch with me?Bob Can we get together for lunch when you visit next week?Im freeOn Tuesday or Wednesd

13、ay just let me know which day would prefer.john,9.3.2 信件的头部1信头的一般格式信头由若干信头字段(header field)组成。所有的信头字段包括四部分,字段名(field name),紧跟冒号:(colon),后跟字段体(field body),最后以回车换行符(CRLF)终止。即信头字段=字段名:字段体,2结构化字段和非结构化字段信头字段大体可以分为结构化字段和非结构化字段两种。结构化字段有特定的格式,由语法分析程序检测。非结构化的字段含有任意的数据,没有固定格式。,3信头字段的元素尽管Email信件的总体结构非常简单,但一些信头字

14、段的结构是很复杂的。下面介绍一些大多数字段共有的元素。(1)空白符(2)注解(3)字段折叠(4)字段大小写,4标准的信头字段(1)与发信方有关的信头字段写信人字段 说明信件的原始创建者,给出他的电子信箱地址。创建者对信件的原始内容负责。格式:From:mailbox 举例:From:,发送者字段 说明实际提交发送这个信件的人,给出他的电子信箱地址。当发信人与写信人不一样时使用。比如,秘书替经理发信。发送者对发送负责。格式:Sender:mailbox 举例:From:Sender:,回复字段 指定应当把回信发到哪里。如果有此字段,回信将会发给它指定的邮箱,而不会发给From字段指定的邮箱。比如

15、,发送的是经理的信,但回信应交办公室处理。格式:Reply-TO:mailbox 举例:From:Reply-TO:,(2)与收信方有关的信头字段收信人字段 指定主要收信人的邮箱地址,可以是多个邮箱地址的列表,地址中间用逗号隔开。格式:TO:mailbox list 举例:TO:,抄送字段 指定此信件要同时发给哪些人,也称为抄送。也可以使用邮箱地址列表,抄送给多个人。格式:Cc:mailbox list 举例:Cc:密抄字段 指定此信件要同时秘密发给哪些人,也称为密件抄送。也可以使用邮箱地址列表,密抄给多个人。格式:Bcc:mailbox list,(3)其它的信头字段日期字段 Date字段含

16、有电子邮件创建的日期和时间。格式:Date:date-time 举例:Date:Tue,04 Dec 2004 16:18:08+800 信件主题字段 描述信件的主题。当回复信件时,通常在主题前面增加“Re:”前缀,标记为该信件为回复信件:当信件被转发时,通常在主题文字前面加上“Fw:”,“Fwd:”这样的前缀。格式:Subject:*text 举例:Subject:Hello!Subject:Re:Hello!,接受字段 是投递信件的特定邮件服务器所作的记录。处理邮件投递的每个服务器必须给它处理的每个信头的前面加一个Received字段,用以描述信件到达目的地所经过的路径以及相关信息。当跟踪

17、各个电子邮件问题时,这个信息很有帮助。格式:Received:from domain/发送主机by domain/接收主机via atom/物理路径id msg-id/接收者msg id举例:Received:from wang195.0.0.1 by li129.5.0.4 Tue dec 2003 12:18:02+800,注释字段 用于把一个注解添加到信件中。格式:Comments:*text 重发字段 当需要把收到的信件重发给另一组收信人的时候,可以保持整个原始信件不变,并简单地产生重发信件所要求的新信头字段。为避免与以前的字段相混。新添加的信头字段都加上Resent-前缀字符串,它们

18、的语法与未加前缀的同名字段相同。格式:Resent-*举例:Resent-From Resent-Sender Resent-date Resent-Reply-To,信件标识字段 用于表示一个信件唯一标识,该字段通常有Smtp服务器生成,这个值通常是唯一的。形式根据使用的软件而定。通常左边是标识符,右边指定计算机名。格式:Message-ID:msg-id,5扩展的信头字段如果想在信头中加入RFC822中没有规定的字段,就需要创建非标准字段。方法非常简单,只要在自定义的信头字段名的前面使用X-前缀。RFC822将这种方法称为扩展字段。事实上已经有许多扩展字段被广泛应用,但没有标准定义。例如:

19、X-LOOP字段X-Mailer字段,6信头中必须要有的字段 在创建信件时,必须使用Date或Resent-Date字段指定创建信件的日期,必须使用From字段指定创建该信件的人或程序的信箱,必须至少使用TO、CC或Bcc中的一个,或者与它们等效的Resent-TO,Resent-CC,Resent-Bcc中的一个,来指定接收信件的人。除了这些创建信件时要求的信头以外,每个处理信件的邮件传输代理(MTA)必须在它处理的信件头部开始处加一个Received字段,就好像打了一个中转邮戳,这就是我们通常在许多信件的开始看到许多个Received字段的原因。,9.3.3 构造和分析符合RFC822标准

20、的电子信件1信件的构造 发送电子邮件的程序要进行电子信件的构造。信件主要分为两大部分:信头和信体,在两部分之间用空白行隔开。先构造信头,信头的必需字段有:一个Date字段,一个From字段,最少一个收信人字段。也可以根据需要加入其它的字段。信体部分比较简单,按照文本文件的方法编写就行。对于较长的信头字段或信体行,可以使用折叠的方法,把它们变为80字符以内的行。,2信件的语法分析 接收邮件的程序要对邮件进行结构和语法分析。信件的语法分析是构造信件的逆过程,通过分析,从中提取必要的信息,使用户最终看到的不是软件接收下来的原始信件,而是经过处理的有条理的信件内容。一般首先将存在折叠的字段展开,将跨多

21、行的字段去掉折叠字符合成一个完整的字段,并在信头中与其它字段分隔开来。去掉折叠的方法是将续行上面一行末尾的CFLF符替换成空格符。其次对字段进行处理,将字段头和字段体分离开。然后显示相关字段的内容。最后提取信件的正文内容。信件体和信头之间以空白行分开,根据这个特点可以很容易地将信头和信体区分开来。,9.4 MIME编码解码与发送附件 为了能利用电子邮件传送各种信息,在RFC1341中提出了一种方法,并在RFC2045至RFC2049中作了进一步的完善,这就是多用途Internet邮件扩展(Multipurpose Internet Mail Extensions),简称MIME。已经成为电子邮

22、件的标准。按照MIME标准构造的邮件称为MIME邮件,或MIME信件,有时也称为MIME实体(MIME entity)。MIME的基本思想是:第一,不改动SMTP和POP3等电子邮件传输协议;第二,仍然要继续使用RFC822的格式来传输邮件。,图9.4 MIME与电子邮件协议之间的关系,MIME主要包括三部分内容(1)扩展了可以在邮件中使用的信头字段。这些新定义的信头字段说明了MIME的版本,邮件内容的类型,编码方式,以及邮件的标识和描述等信息。(2)定义了邮件信体的格式,给出了多媒体电子邮件的标准化表示方法,为信体增加了结构。而在RFC822中,对邮件信体没有作任何结构方面的规定。(3)定义

23、了传送编码方法,可以将任何格式的内容转换为符合RFC822的ASCII文本格式。按照MIME规范,可以构造复杂的邮件,发送附件就是利用MIME实现的。,9.4.2 MIME定义的新的信头字段MIME定义了5个新的信头字段,可以与原有信头字段一样,用在RF822邮件的首部中。1MIME版本信头字段格式:MIME-Version:1.0 此字段用于标识使用的MIME版本号,目前MIME只有1.0版。如果是MIME邮件,就必须有MIME版本信头字段;如无此行,则说明邮件是原来那种RFC822的英文文本。设置这个字段是为了将来出现更高的MIME版本号时,解决发送、接收软件双方的兼容性问题。,2邮件唯一

24、标识信头字段格式:Content-ID:唯一标识信件的字符串 此字段提供一种唯一标识MIME实体的方法,与Message-ID信头字段类似。借助这个唯一标识,可以实现在一个MIME实体中引用其他的MIME实体。如果邮件的内容类型是Message/External-body,就需要使用此字段;对于其他类型,这个字段是可选的。,3邮件内容描述信头字段格式:Content-Description:描述文本 描述文本是可读的字符串,简要说明MIME邮件的内容或主题,收信人可以据此决定是否值得解码和阅读该邮件。,4MIME邮件的内容类型信头字段格式:Content-Type:主类别标识符/子类别标识符;

25、参数列表 例如:Content-Type:Text/Plain;Charset=“gb2312”此字段说明特定的MIME实体中所包含数据的类型,类型不同,邮件体的内部结构也随之不同。它也说明了邮件的性质,是MIME中的主要字段,在节中详述。,5内容传送编码方式信头字段格式:Content-Transfer-Encoding:编码方式标识符 指定在传送邮件时,如何对邮件的主体进行编码。在节中详述。,9.4.3 MIME邮件的内容类型1概述Content-Type是MIME对RFC822扩展的最主要的信头字段,用于指定MIME邮件内容的类型,包含丰富的信息。Content-Type信头字段的目的是

26、充分地描述包含在信体中的数据,使得接收用户代理能够选择适当的代理或机制来将这些数据呈现给用户,或者,用正确的方法处理这些数据。这个字段的值叫做媒体类型(media type)。本节对这个字段进行详细的说明。它的一般格式是:Content-Type:邮件内容媒体主类型名/子类型名;参数列表,这个字段由三部分组成,第一部分是关键字第二部分是邮件内容媒体主类型名(media type identifiers)和子类型名(subtype identifiers),说明邮件内容的媒体类型第三部分,是一个以分号隔开的参数列表,格式是:;参数名=参数值;参数名=参数值;.例如,Content-Type:te

27、xt/HTML;charset=“GB2312”在RFC2046中定义了7个基本的内容主类型(top-level media types),每一种都有一个或多个子类型,共计15个子类型,表9.1列出了它们的标识符,,表9.1 RFC2046中定义的邮件内容类型和子类型,2Text媒体类型3image媒体类型4Audio媒体类型5Video媒体类型6Application媒体类型7Message媒体类型8Message/external-body媒体类型的参数及使用9Multipart媒体类型,9.4.4 MIME邮件的编码方式1MIME编码概述(1)7bit编码方式Content-Transf

28、er-Encoding:7bit(2)8bit编码方式Content-Transfer-Encoding:8bit(3)binary编码方式Content-Transfer-Encoding:binary(4)Base64编码方式(5)Quoted-printable编码方式,2BASE64编码算法在进行Base64的编码时,首先要将被编码的数据看成一个字节序列,不分行。然后按照以下三个步骤反复进行编码。第一步:顺次从要编码的字节序列数据中,取出3个字节,作为一组,该组包含24bit。第二步:将一组的24个bit,再顺次分为四个6bit的小组。并在每小组的前面补两个零,形成四个字节。显然这4个

29、字节的值都在0-63范围内。第三步:根据小组的每个字节的数值,按照表9.2的对应关系,将它们分别转换为对应的可打印ASCII字符。顺次对要编码的数据字节序列,重复进行以上处理,直到所有的数据编码完成为止。,表9.2 Base64编码,此外,编码过程中还需要注意两点:(1)如何将编码后的文本行控制在76个字符以内?按照RFC822的要求,应当将编码后的文本行控制在76个字符以内。这只需要在编码后的字符序列中,每76个字符插入一组CRLF(回车换行),然后就可以发送,在接受端译码时,应首先将碰到的CRLF符删除,再按照Base64的方法译码。在原来要编码的数据中可能有CR(0A)和LF(0D)字符

30、,但它们经过编码后,变成了“K”和“N”,不会与后来插入的CRLF字符相混。,(2)编码时最后一组不满三个字节怎么办?Base64编码时,按照三个字节一组进行,最后一组就有可能剩下1个或2个字节。编码时,一方面对有效的数据要进行编码,另一方面要让接收端能判断出最后一组剩下的有效数据究竟有几个字节。方法是:首先补充全零的填充字节,将最后一组补够3个字节,然后按照上述方法进行编码,在第三步映射成字符后,要将编码后的末尾一个或两个字节替换为“=”字符。,如果最后一组只剩一个数据字节,那么产生的4个编码数据中,只有前两个带有剩余数据字节的位,就应将4个编码数据的后两个字节都替换成等号。如果最后一组剩下

31、两个字节,那么产生的4个编码数据中,前三个带有剩余数据字节的位,这时就将4个编码数据的最后一个字节替换成等号。注意到,等号并不包含在上面的转换表中,接收端根据等号的数目,就可以判知最后一组中有效的字节数,从而正确地译码。,3Quoted-printable编码算法这种编码称为可打印的引用编码(Quoted-printable encoding),被编码的数据以8BIT的字节为单位,这种编码方法的要点就是对于所有可打印的ASCII码,除了特殊符号“=”以外,都不改变。编码算法的要点是:(1)如果被编码数据字节的值在33到60之间(字符!至字符至字符),这部分字符是可打印的,则该数据字节编码为7b

32、it的对应ASCII字符,实际就是将最高位去掉。,(2)其他的数据,包括“=”字符,空格,ASCII码在0-32的不可打印字符,以及非ASCII码的数据,都必须进行编码。被编码的数据以8bit的字节为单位,先将每个字节的二进制代码用两个16进制数字表示,然后在前面加上一个等号“=”,就是该字节的编码。例如,字节值12被编码为“=0C”,字节值61被编码为“=3D”。再比如,汉字“系统”的二进制代码是:11001111 10110101 11001101 10110011,其16进制数字表示为:CFB5CDB3,相应的Quoted-printable编码表示为:=CF=B5=CD=B3。等号的二

33、进制代码是00111101,它的Quoted-printable编码是=3D。回车符被编码为=0D,换行符被编码为=0A。要注意,16进制数据的表示用字母表“0 1 2 3 4 5 6 7 8 9 A B C D E F”,即必须用大写字母。,(3)如果要将编码后的数据分割成76字符的行,可以在分割处插入等号“=”和CRLF。此等号也要计算在76个字符中。例如,ABCDEFGHEJKLMNOPQRSTUVWXYZ 经过编码后将此行变成较短的形式:ABCDEFG=HEJKLMNOPQRSTUV=WXYZ容易看出,接收端只要将插入的分割字符删掉,就很容易将它们恢复成原来的样子。,9.5 POP3与

34、接收电子邮件9.5.1 POP3协议用来接收电子邮件的POP邮局协议最初是在1984年发表的RFC918中定义的,1985年的RFC937发表了它的第二个版本。随着POP协议的广泛使用,1988年的RFC1081又发表了它的第三版本,简称POP3,这个版本又在RFC1225,RFC1460,RFC1725,RFC1939中几经修订,其中RFC1939是当前的POP3标准。,9.5.2 POP3的会话过程,图9.5 POP3会话,POP也使用客户/服务器工作模式,在接收邮件的用户的PC机中,运行POP客户程序,在用户所连接的ISP的邮件服务器中,运行POP服务程序,二者之间按照POP协议相互发送

35、信息,POP客户发送给POP服务器的消息称为POP命令,POP服务器返回的消息称为POP响应。交互的过程称为POP会话。例如:(Connect to the POP3 Server.)/首先连接到POP3服务器S:+OK POP3 server ready/服务器已经准备好C:USER Wang/用户名是Wang,S:+OKC:PASS vegetables/口令是vegetablesS:+OK login successful/客户登录成功了C:LIST/请列出信箱中的信件清单 S:1 AAAA/第一封信S:2 BBBB/第二封信S:3 CCCC/第三封信C:RETR 1/取回第一封信S:+

36、OK(send message 1)/好,(发送第一封信),C:DELE 1/删除第一封信S:+OK/好的C:RETR 2S:+OK(send message 2)C:DELE 2S:+OKC:QUIT/结束会话,再见S:+OK POP3 server disconnecting/好,POP3服务器断开连接,在上面的对话过程中,C:后面是接收邮件的客户端软件发送的命令,S:后面是POP服务器的应答,/后面是注释。从这个例子中可以看出POP会话的特点:会话采用交互的请求应答模式,会话过程通过相互发送文本来完成。客户发送的文本命令也采用命令字 参数的形式。服务器对于客户的命令总是返回一定的响应码,

37、表示客户端的请求是否被正确处理。会话过程所发送的命令有一定的顺序,9.5.3 POP3会话的三个状态POP3会话一共有3个状态:验证状态,事务状态和更新状态。每个状态都是会话过程中的特定阶段。当连接服务器后,POP3会话首先进入验证状态,在这个阶段里,可以使用USER Pass Quit这三个POP3命令,客户段送交用户名和口令,服务器验证是否合法。,通过服务器验证后,服务器锁定该用户的信箱,从而防止多个POP客户端同时对此邮箱进行邮件操作,比如删除,取信等。但是可以让新的邮件加入。这时会话过程转变为事务状态,在事务状态客户端可用的POP3命令有:Noop Stat Quit List Ret

38、r Top Dele Rset Uidl。使用这些命令进行各种邮件操作,POP对话的大部分时间都处在事务状态中。,当客户发出Quit命令后,结束事务状态,POP会话过程进入更新状态。在事务状态进行的一些操作,最终在更新状态中才得以体现。比如在事务状态使用Dele命令删除邮件,实际服务器并没有将邮件删除,只是做了一个删除标志;到了会话过程的更新状态,邮件才被删除。更新状态只是会话中的一个过程,该状态没有可使用的命令,目的是用户在事务状态后用以确认已经进行的操作。在进入该状态后,紧接着就完成了POP3的会话过程,断开了与服务器的连接。要注意,由于异常原因导致的与服务器终止对话并没有进入更新状态。在

39、事务状态删除的邮件没有被删除,下次进入信箱时邮件还是存在的。,9.5.4 POP3标准命令表9.3 常用的POP3命令,9.5.5 接收电子邮件的一般步骤首先利用Winsock连接上POP3服务器,然后:1使用USER命令发送用户信箱名。2使用PASS命令发送信箱密码。如果密码和信箱不匹配,必须从上一步骤重新开始。3对信箱邮件进行操作。此阶段称为事务状态,在这一个阶段,有许多POP3命令可以使用,大体分为下面几类:(1)取得信箱及邮件状态的命令 Stat:取得信箱大小信息 List:取得邮件大小信息 Uidl:取得邮件的唯一标识符。,(2)取得邮件内容的命令Retr:从服务器取回邮件TOP:取邮件信头和信体的前N行。(3)对邮件进行操作的命令Dele:为邮件做删除标记。Rset:复位POP会话。4接收邮件完毕,发送QUIT命令,结束POP3对话。,

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

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号