什么是MIME(多用途互联网邮件扩展)?
MIME(多用途互联网邮件扩展)是原始简单邮件传输协议(SMTP)的扩展。它允许用户通过电子邮件交换不同类型的数据文件,包括音频、视频、图像和应用程序。
与SMTP不同,MIME支持通过电子邮件发送ASCII文本和非ASCII数据。对于ASCII以外的字符集文本,MIME协议是必需的。
SMTP的缺点
SMTP于1981年出现,是通过电子邮件传递消息的标准协议。然而,原始SMTP协议仅支持未经身份验证和加密的7位ASCII文本通信。ASCII只有94个可打印字符,因此该系统无法处理二进制文件或使用不同书写系统、带重音字母等的非英语语言字符。 纯SMTP也不支持发送视频或音频数据。 每个SMTP服务器的默认设计都是开放邮件中继,允许任何人通过它发送电子邮件,而不仅仅是来自或发送给已知用户的邮件。这些限制使得SMTP通信容易受到电子邮件欺骗、垃圾邮件、蠕虫和中间人(MitM)攻击。 MIME被提议作为这些限制的解决方案。
MIME的起源
1991年,当时在Bellcore担任技术人员的Nathaniel Borenstein向互联网工程任务组(IETF)提议扩展SMTP,以便网络(和其他互联网)客户端和服务器能够识别和处理各种类型的数据,而不仅仅是基于拉丁语的ASCII文本,并允许对二进制文件进行编码以通过SMTP传输。 因此,新的文件类型被添加到“邮件”中,成为受支持的互联网协议文件类型。MIME不仅限于文本数据,对于其他通信协议也很重要,尽管它最初的设计只是为了解决电子邮件和SMTP的缺点。 新的MIME数据类型在互联网号码分配机构(IANA)注册。IETF的RFC 6838定义了用于通知和注册MIME媒体类型的程序。
MIME的优势
MIME相对于SMTP有几个优势。
- 用户可以通过电子邮件发送各种二进制附件。
- 同一封电子邮件中可以包含不同类型多个附件。
- 对消息长度没有限制。
- 支持多部分消息。
MIME为多部分消息定义了四种子类型,指定了这些部分的性质及其相互关系。特别是,“multipart/alternative”子类型允许系统选择消息的最佳表示形式:纯文本或HTML。
MIME如何工作
具有MIME格式的电子邮件可以通过标准协议(如SMTP、邮局协议(POP)或互联网消息访问协议(IMAP))传输。此类消息的正文可能由多个部分组成。头部可以用MIME支持的非ASCII字符集指定。IETF的RFC 2045定义了用于描述MIME消息结构的各种头部。 服务器在电子邮件传输开始时插入MIME头部。客户端使用MIME头部为头部指示的数据类型选择适当的播放器应用程序。某些播放器内置于网络客户端或浏览器中。例如,所有浏览器都带有GIF和JPEG图像播放器,并且可以处理HTML文件。其他播放器可能需要下载。 在发送端,MIME将非ASCII数据转换为7位网络虚拟终端(NVT)数据。7位ASCII可以表示128个字符。然后,MIME将此转换后的数据传递给客户端SMTP。在接收端,消息被转换回原始数据,允许收件人查看其内容,无论其包含文本、音频、视频还是其他类型的数据。
MIME头部字段
MIME头部包含多个子部分。其中包括:
MIME版本 此头部字段指示消息是MIME格式的。其值通常为“1.0”。
内容类型 此头部描述消息内容的媒体类型。它由类型和子类型组成,两者都是字符串。当用斜杠(/)连接时,类型和子类型构成一个MIME类型。
- 类型:数据类型的通用类别(例如,视频或文本)
- 子类型:MIME类型所代表的确切数据类型。 MIME类型不区分大小写。可以向MIME类型添加可选参数以提供更多细节。因此,如果参数是“charset”,它将指定用于数据字符的字符集。如果未指定此参数,MIME将使用默认的ASCII字符集。 使用“multipart”类型,MIME允许邮件消息的部分以树状结构排列,以支持:
- 简单文本消息
- 文本加附件
- 附带原始消息的回复
- HTML中的多种替代形式
- 图像、音频和视频
- 应用程序
内容处置 此头部指定电子邮件消息的呈现样式。处置方式可以是:
- 内联:在消息显示时自动显示。
- 附件:不自动显示,而是需要一些用户操作(如下载)。 RFC 2183规定了内容处置头部。
内容传输编码 此头部指示除了内容类型头部中指定的原始编码之外,是否还使用了二进制到文本的编码方案。