电子邮件协议与编程

上传人:j7****6 文档编号:61847467 上传时间:2018-12-13 格式:PPT 页数:69 大小:828.50KB
返回 下载 相关 举报
电子邮件协议与编程_第1页
第1页 / 共69页
电子邮件协议与编程_第2页
第2页 / 共69页
电子邮件协议与编程_第3页
第3页 / 共69页
电子邮件协议与编程_第4页
第4页 / 共69页
电子邮件协议与编程_第5页
第5页 / 共69页
点击查看更多>>
资源描述

《电子邮件协议与编程》由会员分享,可在线阅读,更多相关《电子邮件协议与编程(69页珍藏版)》请在金锄头文库上搜索。

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

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

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

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

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

6、ATA ,5空操作 命令格式:NOOP 6验证电子信箱是否合法 命令格式:VRFY 电子信箱地址 7复位SMTP服务器 命令格式:RSET 8请求服务器发回帮助信息 命令格式:HELP 或者 HELP 命令关键字 9退出会话 命令格式:QUIT ,10.2.4 常用的SMTP响应码 211 系统状态或系统帮助应答。 214 帮助信息 220 服务就绪。 221 服务器关闭传输通道。 250 请求的邮件操作已经完成。 251 用户不是本地的,将按照前向路径(forwaed-path)转发。 354 启动邮件输入,要求邮件文本要用结束。 421 服务不可使用,关闭传输通道。 450 没有执行请求的

7、邮箱操作,因为信箱不可用。,451 请求的操作已经终止,因为在处理的过程中出现了错误。 452 请求的操作没有发生,因为系统的存储空间不够, 500 语法错误,命令不可识别。 501 参数或变元中存在着语法错误。 502 命令不能实现。 503 错误的命令序列 504 命令的参数不能实现。 550 请求的操作不能发生,信箱不可用。 551 用户不在本地,请尝试发送到前向路径(forwaed-path)。 552 请求的邮件操作终止,超出存储分配。 553 请求的操作不能执行,因为信箱语法错误。 554 事务失败。,10.2.5 SMTP的会话过程 SMTP客户与SMTP服务器的会话过程分为三个

8、阶段,先举例说明。以下每行前面的C代表SMTP客户发送的命令,S代表服务器发回的响应。每行/后面的内容是注释。 C:HELO YE /你好!我是YE。 S:250 YE HELLO ,pleased to meet you /你好!YE,很高兴见到你,有事吗? C:MAIL FROM:YE163.COM /我想发信,我的地址是YE163.COM。 S:250 ,Sender, accepted /行!有信你就发吧。,C:RCPT ZHANG /我的信要发给ZHANG。 S:250 , Recipient ok /行!已经准备好。 C:DATA /我要发信件的内容了。 S:354 Enter m

9、ail, end with . /发吧!结尾标志是两个回车换行符夹个英文句点。 C:(客户端按照电子邮件的格式发送邮件内容) C:(邮件内容发送完毕,发送结束标志crlf & . & crlf)/我的信已经发完了 S:250 ok, message saved /好的,你的信已经存储了。 C:QUIT /再见 S:221 See you in cyberspace /再见,在上面的对话过程中,粗体字部分是发送邮件的客户端软件发送的内容,其他部分是SMTP服务器的应答内容。从中可以明显看出SMTP会话具有以下特点: (1)会话的过程采用交互式的请求应答模式,客户发送命令,服务器回送应答。 (2)

10、客户发送的命令和服务器回送的应答都是纯文本形式,有一定格式。 (3)针对客户的每个命令,服务器总要返回一定的响应码,表示服务器是否接受或执行了客户端命令。 (4)会话过程有一定的顺序,10.2.6 使用Winsock来实现电子邮件客户与服务器的会话 (1)启动SMTP服务器,在指定的传输层端口监听客户端的连接请求,为SMTP服务器保留的端口是25。 (2)客户端设置Winsock连接的IP地址或域名,指定端口号,主动发出连接请求,连接到SMTP服务器。比如,网易的SMTP服务器的域名是,监听端口是25。 (3)服务器接收客户端的连接请求,并发回响应。客户端应收到类似220 BigFox ESM

11、TP service ready这样的信息, 这就说明客户端已经与服务器建立TCP/IP连接,成功地实现了第一步。,(4)客户端和服务器分别向对方发送数据。 (5)客户端或服务器分别读取自己缓冲区中的数据。 (6)以上两步是SMTP会话的主要部分,要按照SMTP协议的规定,按照一定顺序,客户向服务器发送命令,服务器向客户发送应答,以上两步要多次重复。 (7)会话完毕,关闭客户端和服务器之间的连接。,10.3 电子邮件信件结构详述 10.3.1 Internet文本信件的格式标准- RFC822 在电子邮件系统的环境中,电子邮件信件是它传递的对象。最早规定电子邮件信件内容结构的标准是在1982发

12、表的,称作RFC822,至今它仍然是Internet上电子邮件信件的当前标准。RFC822定义了信件从主机传递到主机时需要的格式化方式。它的主要用途是为信件提供规范化的格式,使不同类型的网络可以相互传递电子邮件。该标准的最新文本是RFC2822。,RFC822规定,电子邮件信件的内容全部由ASCII字符组成,就是通常所说的文本文件, 从组织上看,RFC822将信件内容结构分为信头和信体两大部分,中间用一个空白行。 对于一行的字符数,有一个1000/80的限制规则。 对于信件的行数,RFC822没有特别的限制,,下面是一个电子邮件信件内容文本的实例,可以大致说明头部行的形式,头部的行由关键字和冒

13、号开始,头部和正文部分由空行分隔开。 From: John_Q_P To: Date:Fri,1 Jan 99 10:21:32 EST Subject: lunch with me? Bob Can we get together for lunch when you visit next week? Im free On Tuesday or Wednesday just let me know which day would prefer. john,10.3.2 信件的头部 1信头的一般格式 信头由若干信头字段(header field)组成。 所有的信头字段包括四部分,字段名(fi

14、eld name),紧跟冒号“:“ (colon),后跟字段体(field body),最后以回车换行符(CRLF)终止。即 信头字段 = 字段名:字段体 ,2结构化字段和非结构化字段 信头字段大体可以分为结构化字段和非结构化字段两种。 结构化字段有特定的格式,由语法分析程序检测。 非结构化的字段含有任意的数据,没有固定格式。,3信头字段的元素 尽管Email信件的总体结构非常简单,但一些信头字段的结构是很复杂的。下面介绍一些大多数字段共有的元素。 (1)空白符 (2)注解 (3)字段折叠 (4)字段大小写,4标准的信头字段 (1)与发信方有关的信头字段 写信人字段 说明信件的原始创建者,给出

15、他的电子信箱地址。创建者对信件的原始内容负责。 格式:From:mailbox 举例:From: ,发送者字段 说明实际提交发送这个信件的人,给出他的电子信箱地址。当发信人与写信人不一样时使用。比如,秘书替经理发信。发送者对发送负责。 格式:Sender:mailbox 举例:From: Sender: ,回复字段 指定应当把回信发到哪里。如果有此字段,回信将会发给它指定的邮箱,而不会发给From字段指定的邮箱。比如,发送的是经理的信,但回信应交办公室处理。 格式:Reply-TO:mailbox 举例:From: Reply-TO: ,(2)与收信方有关的信头字段 收信人字段 指定主要收信人的邮箱地址,可以是多个邮箱地址的列表,地址中间用逗号隔开。 格式:TO:mailbox list 举例:TO: ,抄送字段 指定此信件要同时发给哪些人,也称为抄送。也可以使用邮箱地址列表,抄送给多个人。 格式:Cc:mailbox list 举例:Cc: 密抄字段 指定此信件要同时秘密发给哪些人,也称为密件抄送。也可以使用邮箱地址列表,密抄给多个人。 格式:Bcc:mailbox list ,(3)其它的信头字段 日期

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 生活休闲 > 社会民生

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号