网络编程实用教程_第9章
更新时间:2023-05-26 17:54:01 阅读量: 实用文档 文档下载
第9章 电子邮件协议与编程 本章首先介绍电子邮件系统的构成和工作 原理,然后分析简单邮件传送协议SMTP,接 着叙述RFC822规定的纯文本电子邮件信件的 格式,详细说明了MIME多媒体邮件格式扩展, 分析了接收电子邮件的POP3邮局协议,最后 给出了两个编程实例。通过本章的学习,应 当充分认识应用层协议在网络编程中的重要 性,可以说,网络编程就是应用层协议的实 现。
9.1 电子邮件系统的工作原理 9.1.1 电子邮件的特点 电子邮件(electronic mail,简称e-mail) 是因特网上使用最多的一种应用,它为用户 在因特网上设立了存放邮件的电子邮箱,发 信人可以随时将电子邮件发送到收信人的电 子邮箱,收信人也可以随时上网读取,发信 人与收信人以异步的方式通信。
9.1.2 电子邮件系统的构成 一个电子邮件系统包括三个主要的构件,即用户代理,邮件 消息传输代理,和电子邮件使用的协议。如图9.1所示:
图9.1 电子邮件系统的构成
9.1.3 电子邮件系统的实现
图9.2 电子邮件的发送与接收过程
从以上的分析可以了解电子邮件系统的特点: ①是一种异步的通信系统,不像电话,通话的双方 都必须在场。 ②使用方便,传输迅速,费用低廉,不仅能传输文 字信息,还能附上声音和图像。
③在电子邮件系统的实现中,ISP的服务器必须 7X24小时地不间断地运行,这样才能保证用户可以 随时发送和接收信件,而发送或接收电子邮件的用 户则随意。
9.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服务器之间的会话 1.SMTP会话 如图9.3,说明了SMTP客户与SMTP服务器之间的会话
图9.3 SMTP客户与SMTP服务器之间的会话
2.SMTP命令一 般 是 客 户 主 动 , 首 先 发 送 。 SMTP 客 户 发 往 SMTP服务器的信息称为SMTP命令。在RFC821中, SMTP协议规定了14种命令。 SMTP命令的一般的格式是:
命令关键字 参数 <CRLF>其中,命令关键字一般是四个字母,是一个英文动 词的缩写。参数随命令而异,命令应当以回车换行符 结束。 比如 HELO WANG <CRLF>
3.SMTP应答SMTP服务器收到命令后,返回给SMTP客户的信 息
,称为SMTP应答。客户每次发送一条SMTP命令 后,服务器给客户返回一条响应。SMTP规定了23 种响应码。 SMTP应答都是以一个响应码开头,后面接着响应 的描述信息,如果SMTP服务器不一样,响应的描述 信息可能不一样,SMTP应答的一般格式是: 响应码 响应的文本描述信息 其中,响应码为3位数字,与描述信息文本之间 有一个空格,
9.2.3 常用的SMTP命令1.SMTP客户问候SMTP服务器 命令格式:HELO 发送方的主机名 <CRLF>
2.邮件来自何处,说明发信人的电子邮件地址命 令 格 式 : MAIL <CRLF> FROM : 发 信 人 的 电 子 邮 件 地 址
3.说明收信人的电子邮件地址 命令格式:RCPT TO:收信人的电子邮箱地址 <CRLF>
4.请求发送邮件内容命令格式:DATA <CRLF>
5.空操作命令格式:NOOP <CRLF> 6.验证电子信箱是否合法
命令格式:VRFY 电子信箱地址 <CRLF>7.复位SMTP服务器 命令格式:RSET <CRLF> 8.请求服务器发回帮助信息 命令格式:HELP <CRLF> <CRLF> 9.退出会话 命令格式:QUIT <CRLF> 或者 HELP 命令关键字
9.2.4 常用的SMTP响应码 211 214 系统状态或系统帮助应答。 帮助信息
220221 250
服务就绪。服务器关闭传输通道。 请求的邮件操作已经完成。
251 用户不是本地的,将按照前向路径(forwaed-path) 转发。 354 束。 421 启动邮件输入,要求邮件文本要用两个<CRLF>结 服务不可使用,关闭传输通道。
450
没有执行请求的邮箱操作,因为信箱不可用。
451 误。 452 500 501 502 503 504 550
请求的操作已经终止,因为在处理的过程中出现了错 请求的操作没有发生,因为系统的存储空间不够, 语法错误,命令不可识别。 参数或变元中存在着语法错误。 命令不能实现。 错误的命令序列 命令的参数不能实现。 请求的操作不能发生,信箱不可用。
551 用户不在本地,请尝试发送到前向路径(forwaedpath)。 552 553 554 请求的邮件操作终止,超出存储分配。 请求的操作不能执行,因为信箱语法错误。 事务失败。
9.2.5 SMTP的会话过程SMTP客户与SMTP服务器的会话过程分为三个阶段, 先举例说明。以下每行前面的C代表SMTP客户发送 的命令,S代表服务器发回的响应。每行//后面的内 容是注释。C:HELO YE //你好!我是YE。
S:250 YE HELLO ,nice to meet you //你好!YE,很高兴见到你,有事吗?C:MAIL FROM:YE@ 址是YE@。 //我想发信,我的地
S:250 <From:YE@>,Sender, accepted //行!有信你就发吧。
//我的信要发给ZHANG@。 C:RCPT ZHANG@ //行!已经准备好。 S:250 < ZHANG@ >, Recipient ok C:DATA //我要发信件的内容了。 //发吧!结尾标志是两个回车换行符夹个英文句点。 S:354 Enter
mail, end with <CRLF>.<CRLF> C:(客户端按照电子邮件的格式发送邮件内容) //我的信已经发完了 C:(邮件内容发送完毕,发送结束标志crlf &.& crlf) //好的,你的信已经存储了。 S:250 ok, message saved C:QUIT //再见 S:221 See you in cyberspace //再见
在上面的对话过程中,粗体字部分是发送邮件的客户 端软件发送的内容,其他部分是SMTP服务器的应答 内容。从中可以明显看出SMTP会话具有以下特点:(1)会话的过程采用交互式的请求应答模式,客户 发送命令,服务器回送应答。 (2)客户发送的命令和服务器回送的应答都是纯文 本形式,有一定格式。 (3)针对客户的每个命令,服务器总要返回一定的 响应码,表示服务器是否接受或执行了客户端命令。 (4)会话过程有一定的顺序
9.2.6 使用Winsock来实现电子邮件客户与服务 器的会话(1)启动SMTP服务器,在指定的传输层端口监听 客户端的连接请求,为SMTP服务器保留的端口是25。 (2)客户端设置Winsock连接的IP地址或域名,指 定端口号,主动发出连接请求,连接到SMTP服务器。 比如,网易的SMTP服务器的域名是, 监听端口是25。 (3)服务器接收客户端的连接请求,并发回响应。 客户端应收到类似220 BigFox ESMTP service ready这样的信息, 这就说明客户端已经与服务器建 立TCP/IP连接,成功地实现了第一步。
(4)客户端和服务器分别向对方发送数据。(5)客户端或服务器分别读取自己缓冲区中的数 据。
(6)以上两步是SMTP会话的主要部分,要按照 SMTP协议的规定,按照一定顺序,客户向服务器 发送命令,服务器向客户发送应答,以上两步要多 次重复。(7)会话完毕,关闭客户端和服务器之间的连 接。
9.3 电子邮件信件结构详述9.3.1 Internet文本信件的格式标准-- RFC822 在电子邮件系统的环境中,电子邮件信件是它传 递的对象。最早规定电子邮件信件内容结构的标准是 在1982发表的,称作RFC822,至今它仍然是 Internet上电子邮件信件的当前标准。RFC822定义 了信件从主机传递到主机时需要的格式化方式。它的 主要用途是为信件提供规范化的格式,使不同类型的 网络可以相互传递电子邮件。该标准的最新文本是 RFC2822。
RFC822规定,电子邮件信件的内容全部由ASCII 字符组成,就是通常所说的文本文件,从组织上看,RFC822将信件内容结构分为信头和 信体两大部分,中间用一个空白行。 对于一行的字符数,有一个1000/80的限制规则。
对于信件的行数,RFC822没有特别的限制,
下面是一个电子邮件信件内容文本的实例,可以大致说明头 部行的形式,头部的行由关键字和冒号开始,头部和正文部 分
由空行分隔开。From: John_Q_Public@ To: 912743.253843@ 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? I’m free On Tuesday or Wednesday – just let me know which day would prefer. john
正在阅读:
网络编程实用教程_第9章05-26
计算机基础知识试题及答案10-10
2016年有源电力滤波器APF行业现状及发展趋势分析05-27
SOPC课程设计实验报告02-02
安全生产年度工作总结例文参考04-03
什么是科学发展观08-08
谢谢你扫雪的人作文500字07-13
ERP考试课后简答题整理(参考)10-16
商务智能与决策支持系统05-DW05-31
《钢结构设计》复习题库(1)最新01-27
- 教学能力大赛决赛获奖-教学实施报告-(完整图文版)
- 互联网+数据中心行业分析报告
- 2017上海杨浦区高三一模数学试题及答案
- 招商部差旅接待管理制度(4-25)
- 学生游玩安全注意事项
- 学生信息管理系统(文档模板供参考)
- 叉车门架有限元分析及系统设计
- 2014帮助残疾人志愿者服务情况记录
- 叶绿体中色素的提取和分离实验
- 中国食物成分表2020年最新权威完整改进版
- 推动国土资源领域生态文明建设
- 给水管道冲洗和消毒记录
- 计算机软件专业自我评价
- 高中数学必修1-5知识点归纳
- 2018-2022年中国第五代移动通信技术(5G)产业深度分析及发展前景研究报告发展趋势(目录)
- 生产车间巡查制度
- 2018版中国光热发电行业深度研究报告目录
- (通用)2019年中考数学总复习 第一章 第四节 数的开方与二次根式课件
- 2017_2018学年高中语文第二单元第4课说数课件粤教版
- 上市新药Lumateperone(卢美哌隆)合成检索总结报告
- 网络编程
- 实用
- 教程
- 事业单位面试题目:模拟试题-自行车出租点前期调查
- 车间布局设计说明书
- 材料学院2012年学生工作总结最终版本
- 机电类专业教学质量保障体系的构建与实践
- 截至二零零九年十二月三十一日止年度业绩公告业绩摘要(按香港财务准则)
- 卡夫并购吉百利详细介绍
- 产权式酒店运营模式分析分析
- 新员工入职考试试卷1
- 员工招聘录用表单
- 2011年下学期三(2)班家长会发言稿
- 九上碳和碳单质练习
- 上饶市余干县数学二年级数学下册期中测试卷(A)
- 上饶市上饶县数学二年级上学期数学期末试卷
- 上饶市余干县小学数学二年级下学期数学期末考试试卷
- 人教版初中英语常用短语886个
- 上饶市余干县数学二年级下学期数学期末考试试卷
- 再论黑格尔_逻辑学_的开端
- 2014-2015学年第一学期教学进程表9月19日13级14级
- 砖砌化粪池施工方案doc
- 200万像素高清CMOS网络摄像机