摘自http://blog.csdn.net/jxh_123/article/details/35982345

从上图可以看出邮件收发的整个过程大致如下:

(1)发件人调用PC机中的用户代理编辑要发送的邮件。

(2)发件人点击屏幕上的”发送邮件“按钮,把发送邮件的 工作全部交给用户代理来完成。

用户代理通过SMTP协议将邮件发送给发送方的邮件服务器(在这个过程中,用户代理充当

SMTP客户,而发送方的邮件服务器则充当SMTP服务器)。

(3)发送方的邮件服务器收到用户代理发来的邮件后,就把收到的邮件临时存放在

邮件缓存队列中,等待时间成熟的时候再发送到接收方的邮件服务器(等待时间的长短取

决于邮件服务器的处理能力和队列中待发送的信件的数量)。

(4)若现在时机成熟了,发送方的邮件服务器则向接收方的邮件服务器发送邮件

缓存中的邮件。在发送邮件之前,发送方的邮件服务器的SMTP客户与接收方的邮件服

务器的SMTP服务器需要事先建立TCP连接,之后再将队列中 的邮件发送出去。值得

注意的是,邮件不会在因特网中的某个中间邮件服务器落地。

(5)接收邮件服务器中的SMTP服务器进程在收到邮件后,把邮件放入收件人的

用户邮箱中,等待收件人进行读取。

(6)收件人在打算收信时,就运行PC机中的用户代理,使用POP3(或IMAP)协

议读取发送给自己的邮件。注意,在这个过程中,收件人是POP3客户,而接收邮件服务

器则是POP3客户,箭头的方向是从邮件服务器指向接收用户,因为这是一个“拉”的操作。

下面我们根据上面的总体过程介绍下各个组件。

用户代理

用户代理UA(User Agent)是一个软件包(程序),它的功能是:撰写、阅读、回

复和转发报文,还能处理邮箱(如创建收信箱和发信箱)。共有两种类型的用户代理:

命令驱动和GUI。命令驱动属于早期的电子邮件,通过命令发送和接收邮件,而GUI则是

包含图形界面,允许用户使用键盘和鼠标与软件进行交互。

SMTP协议

SMTP协议服务器的熟知端口号为25,与之前总结过的telnet协议和FTP协议类似的

地方是,SMTP协议的客户端和服务器端都是通过命令和响应的形式进行交互,即SMTP

客户通过命令向SMTP服务器发送操作请求,而服务器则通过3位的数字对响应的请求作

出响应。SMTP规定了14条命令和21中应答信息,每条命令有4个字母组成,而每一种

应答一般只有一行信息,有一个3位数字的代码开始,后面附上很简单的附加说明。

邮件传送主要包括3个阶段:建立连接、邮件传送和终止连接。

建立连接阶段:

1.当SMTP客户端每隔一定时间对邮件缓存扫描一次,如发现有邮件,就使用SMTP

的熟知端口号25与接收方的邮件服务器的SMTP服务器建立TCP连接。

2.接收方SMTP服务器发出“220 Service ready"告诉客户端它已经准备好接收邮件。

若服务器未就绪,它就发送代码421(服务器不可用)。

3.客户发送HELO报文,并使用它的域名地址标志自己。目的是:用来把客户的域名

通知服务器,值得注意的是,在TCP的连接建立阶段,发送方和接收方都是通过它们的

IP地址来告诉对方的。

4.服务器响应代码250(请求命令完成)或根据情况的其他一些代码。

报文传送阶段:

在SMTP客户与服务器之间建立连接后,发件人就可以与一个或多个收件人交换

单个的报文了。若收件人超过一个,则下面步骤3和步骤4将重复进行。

1.客户发送MAIL FROM报文介绍报文的发送者。它包括发送人的邮件地址

(邮箱名和域名,如house@qq)。这个步骤是必要的:因为可以给服务器在返回差错

或报文时的返回邮件地址。

2.服务器响应代码250(请求命令完成)或其他适当的代码。

3.客户发送RCPT(收件人)报文,包括收件人的邮件地址,RCPT命令的

作用是:先弄清接收方系统是否已经准备好接收邮件的准备,然后才发送邮件,这样做

视为了避免浪费通信资源,不至于发送了很长的邮件以后才知道是因地址错误。

4.服务器响应代码250或其他适当的代码。

5.客户发送DATA报文对报文的传送进行初始化,DATA命令表示要开始传送

邮件的内容了。

6.服务器响应代码"354 Start mail input: end with <CRLF>.<CRLF>"或其他适当

的报文(如421 服务器不可用,500 命令无法识别)。

7.客户用连续的行发送报文的内容。每一行的行结束时输入<CRLF>.<CRLF>,即

回车换行.回车换行,表示邮件内容结束。

8.服务器响应代码(250 请求命令完成)或其他适当的代码。

值得注意的是:虽然SMTP使用TCP连接视图使邮件的传送可靠,但它并不能保证

不丢失邮件。也就是说,使用SMTP传送邮件只能说可以可靠地传送接收方的邮件服务

器,在往后的情况就不知道了。接收方的邮件服务器也许会出故障,使收到的服务器

全部丢失(在收件人读取信件之前)。

终止连接

在报文传送成功后,客户就终止连接。包括如下步骤:

1.客户发送QUIT命令。

2.服务器响应221(服务关闭)或其他代码。

在连接终止阶段后,TCP连接必须关闭。

POP协议

POP协议,Post office Protocal。邮件交付的第一阶段和第二阶段使用SMTP,

而第三阶段则使用邮件读取协议。SMTP是一个push协议,而第三阶段则使用pull协议,

包括POP和IMAP协议,POP主要使用POP3,而IMAP协议则主要使用IMAP4。

POP3采用C/S的工作方式。在接收邮件的用户PC机中的用户代理UA必须运行

POP3的客户程序,而在收件人所连接的ISP的邮件服务器中则运行POP的服务器程序。

POP服务器只有在用户输入鉴别信息(用户名+密码)后,才允许对方对邮箱进行读取。

POP3有两种工作方式:删除方式和保存方式。删除方式就在每一次读取邮件后

就把邮箱中的这个邮件删除,保存方式就是在读取邮件后仍然在邮箱中保存这个邮件,

该方式是通过对之前的POP3工作方式(即删除)的缺点进行弥补,对功能进行扩充。

IMAP协议

IMAP协议,Internet Mail Access Protocal(因特网邮件读取协议)。 IMAP协议

比POP3协议复杂的多,也是按照C/S的工作方式,现在较新的版本是IMAP4。

在使用IMAP时,用户的PC机上运行IMAP客户程序,然后与接收方的邮件服务器上

的IMAP服务器程序建立TCP连接。POP3不允许用户则邮件服务器上整理自己的邮件,

用户在服务器上不能不同的文件夹,POP3也不允许用户在下载邮件之前读取邮件的部分

内容,而IMAP则克服了这些POP3的缺点,说白了就是POP3协议不太愿意让用户直接

操作服务器,而IMAP正好客户了这些缺点。

IMAP4提供了以下功能(这些功能POP3则没有):

1.用户在下载邮件之前可以检查邮件的首部。

2.用户在下载邮件之前可以用特定的字符串搜索电子邮件的内容。

3.用户可以部分地下载电子邮件。

4.用户可以在邮件服务器上创建、删除邮箱,或对邮箱重命名。

5.为了存放电子邮件,用户可以在文件夹中创建分层次的邮箱。

注意:不用把邮件的发送协议SMTP协议与邮件的读取协议POP或IMAP协议弄混淆了。

发送人的UA向发送发邮件服务器发送邮件,以及发送方的邮件服务器先接受方的邮件服务器

发送邮件都是采用SMTP协议,而收件人的UA邮件接收服务器中接收文件则采用的是POP协议

或IMAP协议。

MIME

MIME协议(Multipurpose Internet Mail Extensions),通用因特网邮件扩充协议,作为

SMTP的一种辅助协议,其引入是为了克服SMTP的如下不足:

1.SMTP只能发送使用NVT(虚拟网络终端) 7位ASCII码格式的报文,它不能使用NVT 7

位ASCII码不支持的语言(如汉语,日语,德语等)。

2.SMTP不能传送可执行文件或其他二进制对象(如图像文件)。

3.SMTP不支持音频或视频文件。

4.SMTP发送的邮件的长度受到限制。

为了克服以上的不足,便引入了MIME协议,MIME协议是一种扩展协议性的辅助协议,

“扩充”指的是只是对原来协议的扩展,而不是取代。它允许非ASCII码数据能够通过电子邮

件传送。MIME在发送方把非ASCII码数据转换为NVT ASCII数据,之后的工作再交给SMTP

完成,在接收方再将NVT ASCII数据还原成原来的数据。MIME的体系结构如下:

MIME定义了5种首部,用来加在原始的电子邮件部分以定义参数的转换,这五种首部

分别是:MIME-Version(MIME版本)、Constent-Type(内容类型)、Content-Transfer-Encoding(内容-传送-编码)、Content-Id(内容-标识)和Content-Description(内容描述)。

MIME版本:定义了MIME使用的版本。

内容-类型:定义报文主体使用的数据类型和子类型,用<数据类型/子类型>表示。

内容-传送-编码:定义了邮件的主体在传送时是如何编码的。

内容-标识:在多报文的环境中唯一地标识报文。

内容描述:定义了主体是否为图像、音频或视频。

基于WWW的邮件

基于WWW的邮件收发系统的体系结构与普通的电子邮件收发系统不同,基于WWW

的邮件收发系统的整个过程描述如下:

1.从发送者的浏览器传送到发送方邮件服务器是通过HTTP协议(而一般的则是通过SMTP协议)。

2.从发送方服务器到接收方邮件服务器是通过SMTP协议(与一般的相同)。

3.从接收方到接收者是通过HTTP协议(而一般的则是POP3协议或IMAP协议)。

电子邮件发送协议 是一种基于“ 推 ”的协议,主要包括 SMTP ; 邮件接收协议 则是一种基于“ 拉 ”的协议,主要包括 POP协议 和 IMAP协议 ,在正式介绍这些协议之前,我们先给出邮件收发的体系结构:

电子邮件收发这样实现!!!相关推荐

  1. java电子邮件收发系统,基于Java_Mail的电子邮件收发系统毕业设计

    基于Java_Mail的电子邮件收发系统毕业设计 基于 Java Mail 的电子邮件 收发 系统的设计与实现 目 录 第 1 章 概述 ............................... ...

  2. C#毕业设计——基于C#+asp.net+cs的电子邮件收发系统设计与实现(毕业论文+程序源码)——电子邮件收发系统

    基于C#+asp.net+cs的电子邮件收发系统设计与实现(毕业论文+程序源码) 大家好,今天给大家介绍基于C#+asp.net+cs的电子邮件收发系统设计与实现,文章末尾附有本毕业设计的论文和源码下 ...

  3. 电子邮件收发协议总结

    说明:本文仅供学习交流,转载请标明出处,欢迎转载!  电子邮件发送协议是一种基于"推"的协议,主要包括SMTP:邮件接收协议则是一种基于"拉"的协议,主要包括P ...

  4. 电子邮件收发原理和实现(POP3, SMTP)

    电子邮件的收发流程示意图: 相对于邮件客户端的流程就是: 邮件接收--POP3协议 POP3(Post Office Protocol 3,邮局协议版本3)主要用于支持使用客户端远程管理在服务器上的电 ...

  5. 用C#实现基于TCP协议的网络通讯

    TCP协议是一个基本的网络协议,基本上所有的网络服务都是基于TCP协议的,如HTTP,FTP等等,所以要了解网络编程就必须了解基于TCP协议的编程.然而TCP协议是一个庞杂的体系,要彻底的弄清楚它的实 ...

  6. Datawhale组队学习周报(第040周)

    本周报总结了从 11月15日至11月21日,Datawhale组队学习的运行情况,我们一直秉承"与学习者一起成长的理念",希望这个活动能够让更多的学习者受益. 第 31 期组队学习 ...

  7. 【组队学习】【31期】基于Python的办公自动化

    基于Python的办公自动化 航路开辟者:牧小熊.刘雯静.张晓东.吴争光.隆军 领航员:六一 航海士:牧小熊.李显.刘羽中.王晓亮 基本信息 开源内容:https://github.com/dataw ...

  8. 【组队学习】【31期】组队学习内容详情

    第31期 Datawhale 组队学习活动马上就要开始啦! 本次组队学习的内容为: IOS开发 基于Python的办公自动化 吃瓜教程--西瓜书+南瓜书 LeetCode 刷题 李宏毅机器学习(含深度 ...

  9. 【组队学习】【26期】编程实践(Python办公自动化)

    编程实践(Python办公自动化) 论坛版块: http://datawhale.club/c/team-learning/29-category/29 开源内容: https://github.co ...

  10. iphonex重量_精仿苹果iPhone X手机配置介绍

    精仿苹果iPhone X手机配置介绍 [上市时间] 2017年10月最新版 [屏幕色彩] 1600万 [分 辨 率] 1920X1080 [屏幕尺寸] 5.8英寸IPS全视角电容式触摸屏 [处 理 器 ...

最新文章

  1. 【代码笔记】iOS-长条label
  2. 电气:6机30节点经济调度(考虑负荷平衡和线路容量,不考虑斜坡)代码实现
  3. jQuery中的筛选(六):first()、last()、has()、is()、find()、siblings()等
  4. jquery-easyui中表格的行编辑功能
  5. Spring3 MVC注解Hello World
  6. leecode第二百九十二题(Nim游戏)
  7. Iphone隐藏和显示TabBar的方法
  8. 程序员失业一月转行去送外卖,晒出当天收入,还以为看错了
  9. Java面向对象总复习-QuickHit
  10. 三台虚拟机如何通过GNS3互通
  11. 自由空间光通信OptiSystem仿真
  12. catia导出bom清单_CATIA VBA 二次开发工具 | 一键导出Bom信息到Excel
  13. 最优化理论与方法(袁亚湘 孙文瑜)笔记(一)
  14. sigar 监控服务器硬件信息
  15. 经典网页设计:20佳很酷的个人网站设计案例
  16. Android 高仿腾讯旗下app的 皮肤加载技术
  17. 数据量再大也不怕!笔记本电脑也可以分析 100GB 数据
  18. ios不能保存png_AnyTrans for iOS for Mac (强大的ios设备管理工具)
  19. java程序设计案例教程答案,2年以上经验必看
  20. DorisDB系列文档(三)基本原理

热门文章

  1. 扫雷游戏网页版_借“买量”造爆款,梦幻西游网页版击穿H5游戏天花板
  2. 小米随身wifi没有网络显示无服务器,小米随身wifi创建失败如何解决_小米随身wifi网络创建失败的解决教程...
  3. 网络下载器 迅雷大众版 v7.9.42.5050 精简绿色版
  4. 好工具推荐系列:Github客户端GitHub Desktop使用方法
  5. 《软件体系结构》 第一章 软件体系结构概论
  6. 2020.9.28 爱客影视3.6.5-pro完整版搭建完毕带解析接口无广告
  7. win8优化(win8优化大师设置开始界面)
  8. 阿里 计算机底层架构原理 pdf,完美起航-震撼!8位阿里大牛编写的2500页计算机底层架构原理解析,香香香...
  9. 打破多项存储世界记录,宏杉科技表示很淡定
  10. 嵌入式开发技术汇总001+modbus RTU调试四件套 : modbus poll 7 ; modbus slave 6;modscan32;MThings 使用教程