MIME:让电子邮件支持多媒体的关键技术

本文深入解析了MIME(多用途互联网邮件扩展)协议。它作为SMTP协议的扩展,解决了早期电子邮件仅支持ASCII文本的限制,使得通过邮件发送音频、视频、图像和应用程序等二进制文件成为可能,并详细介绍了其工作原理、核心优势及主要头部字段。

什么是 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 的优势

与 SMTP 相比,MIME 有几个优点。

  • 用户可以通过电子邮件发送不同类型的二进制附件。
  • 同一封电子邮件中可以包含多种不同类型的附件。
  • 对消息长度没有限制。
  • 支持多部分消息。

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-Version 此头部字段表明消息采用 MIME 格式。其值通常为“1.0”。

Content-Type 此头部描述消息内容的媒体类型。它由一个类型和一个子类型组成,两者都是字符串。当它们之间用斜杠(/)连接时,类型和子类型就构成了一个 MIME 类型。

  • 类型:数据类型的通用类别(例如,视频或文本)
  • 子类型:MIME 类型所代表的确切数据类型。

MIME 类型不区分大小写。可以向 MIME 类型添加可选参数以提供更多详细信息。因此,如果参数是“charset”,它将指定用于数据字符的字符集。如果未指定此参数,MIME 将使用默认的 ASCII 字符集。

使用“multipart”类型,MIME 允许邮件消息具有以树状结构排列的部分,以支持:

  • 简单文本消息
  • 文本加附件
  • 回复时附带原始消息
  • HTML 中的多种替代形式
  • 图像、音频和视频
  • 应用程序

Content-Disposition 此头部指定电子邮件消息的呈现风格。处理方式可以是:

  • 内联:在显示消息时自动显示
  • 附件:不会自动显示,而是需要一些用户操作(例如下载)

RFC 2183 指定了内容处置头部。

Content-Transfer-Encoding 此头部指示除了内容类型头部中指定的原始编码之外,是否还使用了二进制到文本的编码方案。

comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计