
计算机网络 电子邮件
MIME 主要包括三个部分
Base64 编码 适合任意长度的二进制数据。编码表如下: (用两个连在一起的二个等号“==”和一个等号“=”分别表示最后一组的代码只有8位或16位。 )
MIME 举例
发布日期:2021-05-10 03:17:57
浏览次数:19
分类:精选文章
本文共 3508 字,大约阅读时间需要 11 分钟。
电子邮件概述
- 电子邮件 (e-mail):指使用电子设备交换的邮件及其方法。
- 电子邮件是互联网上使用得最多的和最受用户欢迎的一种应用。
- 优点:使用方便,传递迅速,费用低廉,可以传送多种类型的信息(包括:文字信息,声音和图像等)。
电子邮件的重要标准
- 简单邮件发送协议:SMTP
- 互联网文本报文格式
- 通用互联网邮件扩充 MIME
- 邮件读取协议:POP3 和 IMAP
电子邮件的组成:三个主要构件
用户代理,邮件服务器,以及邮件发送和读取协议。

用户代理 UA (User Agent)
- 用户代理 UA 就是用户与电子邮件系统的接口,是电子邮件客户端软件。
- 用户代理的功能:撰写、显示、处理和通信。
- 邮件服务器的功能是发送和接收邮件,同时还要向发信人报告邮件传送的情况(已交付、被拒绝、丢失等)。
- 邮件服务器按照客户 - 服务器方式工作。邮件服务器需要使用发送和读取两个不同的协议。
用户与电子邮件系统的接口。又被称为电子邮件客户端软件。
基本功能:撰写、显示、处理和通信。
邮件服务器 (Mail Server)
- 又被称为邮件传输代理。
- 功能:发送和接收邮件,同时还要向发信人报告邮件传送的情况。
- 按照客户 – 服务器方式工作。
- 在发送和读取邮件时使用两个不同的协议:SMTP,POP3。
- 邮件发送和读取使用不同的协议协议。
- 简单邮件发送协议 SMTP:用于在用户代理向邮件服务器或邮件服务器之间发送邮件。
- 邮局协议 POP3:用于用户代理从邮件服务器读取邮件。
应当注意
- 一个邮件服务器既可以作为客户,也可以作为服务器。
- 例如,当邮件服务器 A 向另一个邮件服务器 B 发送邮件时,邮件服务器 A 就作为 SMTP 客户,而 B 是 SMTP 服务器。
- 当邮件服务器 A 从另一个邮件服务器 B 接收邮件时,邮件服务器 A 就作为 SMTP 服务器,而 B 是 SMTP 客户。
邮件服务器必须能够同时充当客户和服务器。
SMTP和POP3(或IMAP)都是使用TCP连接来传送邮件的,目的是为了可靠地传送邮件。电子邮件的最主要的组成构件
发送和接收电子邮件的几个重要步骤
- 发件人调用 PC 中的用户代理撰写和编辑要发送的邮件。
- 发件人的用户代理把邮件用 SMTP 协议发给发送方邮件服务器。
- SMTP 服务器把邮件临时存放在邮件缓存队列中,等待发送。
- 发送方邮件服务器的 SMTP 客户与接收方邮件服务器的 SMTP 服务器建立 TCP 连接,然后就把邮件缓存队列中的邮件依次发送出去。
- 运行在接收方邮件服务器中的SMTP服务器进 程收到邮件后,把邮件放入收件人的用户邮箱中,等待收件人进行读取。
- 收件人在打算收信时,就运行PC机中的用户代理,使用POP3(或 IMAP)协议读取发送给自己的邮件。
电子邮件的组成
- 电子邮件由信封 (envelope) 和内容 (content) 两部分组成。
- 电子邮件的传输程序根据邮件信封上的信息来传送邮件。用户在从自己的邮箱中读取邮件时才能见到邮件的内容。
- 在邮件的信封上,最重要的就是收件人的地址。
电子邮件地址的格式
- TCP/IP 体系的电子邮件系统规定电子邮件地址的格式如下: 收件人邮箱名@邮箱所在主机的域名
- 符号“@”读作“at”,表示“在”的意思。
简单邮件传送协议 SMTP
- SMTP 规定了在两个相互通信的 SMTP 进程交换信息的方法。
- SMTP 使用客户–服务器方式。
- SMTP 基于 TCP 实现客户与服务器的通信。
- SMTP 是一个基于文本的 (即 ASCII 码) 的协议。
- SMTP 客户与服务器之间采用命令-响应方式进行交互。
SMTP 基于 TCP 实现客户与服务器之间的通信。

SMTP 通信的三个阶段
- 连接建立:连接是在发送主机的 SMTP 客户和接收主机的 SMTP 服务器之间建立的。SMTP不使用中间的邮件服务器。
- 邮件传送
- 连接释放:邮件发送完毕后,SMTP 应释放 TCP 连接。
连接建立
邮件传送
连接释放
电子邮件的信息格式
- 一个电子邮件分为信封和内容两大部分。
- RFC 5322 只规定了邮件内容中的首部 (header) 格式,而对邮件的主体 (body) 部分则让用户自由撰写。
邮件内容的首部
- “To:” 后面填入一个或多个收件人的电子邮件地址。用户只需打开地址簿,点击收件人名字,收件人的电子邮件地址就会自动地填入到合适的位置上。
- “Subject:” 是邮件的主题。它反映了邮件的主要内容,便于用户查找邮件。
- “Cc:” 表示应给某某人发送一个邮件副本。
- “From” 和 “Date” 表示发信人的电子邮件地址和发信日期。
- “Reply-To” 是对方回信所用的地址。
邮件读取协议 POP3 和 IMAP
- 两个常用的邮件读取协议:
- POP3:邮局协议 (Post Office Protocol) 第3个版本
- IMAP:网际报文存取协议 (Internet Message Access Protocol)
- POP3 使用客户–服务器方式。
- POP3 基于TCP实现客户与服务器的通信。
- POP3 支持用户鉴别。
- POP3 服务器删除被用户读取了的邮件。
- IMAP 使用客户–服务器方式。
- IMAP 基于TCP实现客户与服务器的通信。
- IMAP是一个联机协议。
IMAP 的特点
- 连接后只下载邮件首部(部分下载)。
- 用户直接在IMAP服务器上创建和管理文件夹。
- 用户可以搜索邮件内容。
- 用户可以在不同的地方使用不同的计算机随时上网阅读和处理自己的邮件。
- 允许收信人只读取邮件中的某一个部分。
- 缺点:要想查阅邮件,必须先联网。
IMAP 与 POP3 比较

必须注意
- 邮件读取协议 POP 或 IMAP 与邮件传送协议 SMTP 完全不同。
- 发信人的用户代理向源邮件服务器发送邮件,以及源邮件服务器向目的邮件服务器发送邮件,都是使用 SMTP 协议。
- 而 POP 协议或 IMAP 协议则是用户从目的邮件服务器上读取邮件所使用的协议。
基于万维网的电子邮件
用户代理 (UA) 的缺点:
- 必须在计算机中安装用户代理软件。
- 但可能不能安装或不允许安装。
- 因此,不方便收发邮件。
万维网电子邮件优点
不需要在计算机中再安装用户代理软件。
计算机能联网,就能非常方便地收发电子邮件。 电子邮件界面非常友好。万维网电子邮件
- 发送、接收电子邮件时使用 HTTP 协议。
- 两个邮件服务器之间传送邮件时使用 SMTP。

通用互联网邮件扩充 MIME
SMTP 有以下缺点:
- SMTP 不能传送可执行文件或其他的二进制对象。
- SMTP 限于传送 7 位的 ASCII 码。许多其他非英语国家的文字(如中文、俄文,甚至带重音符号的法文或德文)就无法传送。 SMTP 服务器会拒绝超过一定长度的邮件。 某些 SMTP 的实现并没有完全按照 [RFC 821] 的 SMTP 标准。
MIME 概述
- 通用互联网邮件扩充 MIME 并没有改动 SMTP 或取代它。
- MIME 的意图是继续使用目前的 [RFC 822] 格式,但增加了邮件主体的结构,并定义了传送非 ASCII 码的编码规则。
MIME 和 SMTP 的关系

- 5 个新的邮件首部字段,它们可包含在原有首部中。这些字段提供了有关邮件主体的信息。
- 定义了许多邮件内容的格式,对多媒体电子邮件的表示方法进行了标准化。
- 定义了传送编码,可对任何内容格式进行转换,而不会被邮件系统改变。
MIME 增加 5 个新的邮件首部

内容传送编码(Content-Transfer-Encoding)
Quoted-printable 编码
适用于所传送的数据中只有少量的非 ASCII 码的情况。


内容类型
- MIME 着标准规定 Content-Type 说明必须含有两个标识符,即内容类型(type)和子类型(subtype),中间用“/”分开。
- MIME 标准原先定义了 7 个基本内容类型和 15 种子类型。
- MIME允许发件人和收件人自己定义专用的内容类型。但为避免可能出现名字冲突,标准要求为专用的内容类型选择的名字要以字符串 X-开始。
MIME Content-Type 说明中的类型及子类型


发表评论
最新留言
逛到本站,mark一下
[***.202.152.39]2025年04月18日 18时32分03秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
Android架构——旧版 HAL
2019-03-07
Android 音频开发——AudioTrack播放
2019-03-07
java数组初始化及内存分析
2019-03-07
java组合、继承
2019-03-07
1 java程序设计概述
2019-03-07
Ubuntu操作系统鼠标闪烁
2019-03-07
Objective-C 5 NSString常用方法
2019-03-07
Objective-C 9 常用结构体
2019-03-07
Effective OC 笔记 2类的头文件中尽量少引入其他头文件
2019-03-07
Unable to execute dex: Multiple dex files
2019-03-07
如何在sublime Text3实时运行js代码?
2019-03-07
如何用npm安装不同版本的插件
2019-03-07
获取当前点击的DOM元素?
2019-03-07
js怎样判断引用类型和值类型?
2019-03-07