邮件协议

笔记参考来源:

https://www.cnblogs.com/wuyoucao/archive/2017/05/19/6880202.html 感谢作者 烦嚣的人

定义

全称是多用途互联网邮件扩展(MIME,Multipurpose Internet Mail Extensions),在MIME出台之前,使用RFC 822只能发送基本的ASCII码文本信息,邮件内容如果要包括二进制文件、声音和动画等,实现起来非常困难,最为麻烦的是多家邮件服务器商间邮件的互发,如果没有一种统一的格式定义,想要互发需要投入巨大的人力物力。MIME提供了一种可以在邮件中附加多种不同编码文件的方法,弥补了原来的信息格式的不足。实际上不仅仅是邮件编码,现在MIME经成为HTTP协议标准的一个部分。

组成

MIME消息由消息头消息体两大部分组成。

邮件头

MIME邮件的邮件头包含了发件人、收件人、主题、时间、MIME版本、邮件内容的类型等重要信息,常见的邮件头如下:

域名
含义
添加者

Received

传输路径

各级邮件服务器

Return-Path

回复地址

目标邮件服务器

Delivered-To

发送地址

目标邮件服务器

Reply-To

回复地址

邮件的创建者

From

发件人地址

邮件的创建者

To

收件人地址

邮件的创建者

Cc

抄送地址

邮件的创建者

Bcc

暗送地址

邮件的创建者

Date

日期和时间

邮件的创建者

Subject

主题

邮件的创建者

Message-ID

消息ID 邮件的创建者

MIME-Version

MIME版本

邮件的创建者

Content-Type

内容的类型

邮件的创建者

Content-Transfer-Encoding

内容的传输编码方式 邮件的创建者

邮件类型 ContentType

表示邮件的邮件体的类型,一般以Content-Type: [type]/[subtype]; parameter 的格式出现。

type可选值如下:

type
作用

Text

用于标准化地表示的文本信息,文本消息可以是多种字符集和或者多种格式的;

Multipart

用于连接消息体的多个部分构成一个消息,这些部分可以是不同类型的数据;

Application

用于传输应用程序数据或者二进制数据;

Message

用于包装一个E-mail消息;

Image

用于传输静态图片数据;

Audio

用于传输音频或者音声数据;

Video

用于传输动态影像数据,可以是与音频编辑在一起的视频数据格式。

subtype用于指定type的详细形式。content-type/subtype配对的集合和与此相关的参数,为了确保这些值在一个有序而且公开的状态下开发,MIME使用Internet Assigned Numbers Authority (IANA)作为中心的注册机制来管理这些值。常用的subtype值如下所示:

subtype
作用

text/plain

纯文本

text/html

HTML文档

application/xhtml+xml

XHTML文档

image/gif

GIF图像

image/jpeg

JPEG图像

image/png

PNG图像

video/mpeg

MPEG动画

application/octet-stream

任意的二进制数据

application/pdf

PDF文档

application/msword

Microsoft Word文件

message/rfc822

RFC 822形式

multipart/alternative

HTML邮件的HTML形式和纯文本形式,相同内容使用不同形式表示

application/x-www-form-urlencoded

使用HTTP的POST方法提交的表单

multipart/form-data

同上,但主要用于表单提交时伴随文件上传的场合

parameter用于指定附件信息,通常用于指定text/plain和text/htm等的文字编码方式的charset参数。

默认的subtype:

type
默认值

Text

text/plain

Application

application/octet-stream

Multipart

multipart/mixed

内容传输编码 Content-Transfer-Encoding

用于指定邮件体编码,格式为 Content-Transfer-Encoding: [mechanism],支持的值有7bit8bitbinaryquoted-printablebase64

邮件体

邮件体内容丰富多样,既有纯文本,也有超文本、图片文字、视频、附件,那么如何表示邮件的类型?

如果Content-Type为 text/plain; charset=GBK则代表该邮件体是一个纯文本类型的邮件;但是如果邮件包含很多图片、文本、附件,则Content-Type为multipart 类型,邮件会被分为很多part(段),每段又包含段头和段体:

MIME协议组成

所以,如果要发送一封包含附件的邮件,你的邮件的MIME类型应该为multipart/mixed

实例

纯文本:

文本和超文本:

文本,超文本,附件:

包含所有东西:

最后更新于

这有帮助吗?