邮件协议
笔记参考来源:
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可选值如下:
Text
用于标准化地表示的文本信息,文本消息可以是多种字符集和或者多种格式的;
Multipart
用于连接消息体的多个部分构成一个消息,这些部分可以是不同类型的数据;
Application
用于传输应用程序数据或者二进制数据;
Message
用于包装一个E-mail消息;
Image
用于传输静态图片数据;
Audio
用于传输音频或者音声数据;
Video
用于传输动态影像数据,可以是与音频编辑在一起的视频数据格式。
subtype用于指定type的详细形式。content-type/subtype配对的集合和与此相关的参数,为了确保这些值在一个有序而且公开的状态下开发,MIME使用Internet Assigned Numbers Authority (IANA)作为中心的注册机制来管理这些值。常用的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:
Text
text/plain
Application
application/octet-stream
Multipart
multipart/mixed
内容传输编码 Content-Transfer-Encoding
用于指定邮件体编码,格式为 Content-Transfer-Encoding: [mechanism],支持的值有7bit,8bit,binary,quoted-printable,base64
邮件体
邮件体内容丰富多样,既有纯文本,也有超文本、图片文字、视频、附件,那么如何表示邮件的类型?
如果Content-Type为 text/plain; charset=GBK则代表该邮件体是一个纯文本类型的邮件;但是如果邮件包含很多图片、文本、附件,则Content-Type为multipart 类型,邮件会被分为很多part(段),每段又包含段头和段体:

所以,如果要发送一封包含附件的邮件,你的邮件的MIME类型应该为multipart/mixed
实例
纯文本:
文本和超文本:
文本,超文本,附件:
包含所有东西:
最后更新于
这有帮助吗?