MIME 多用途互联网邮件扩展类型

一、为什么会有 MIME?

因为 简单邮件传送协议 SMTP 有几个缺点:

  1. SMTP 不能传送可执行文件或者其他二进制对象;
  2. SMTP 只能传送7位的 ASCII 码,许多国家非英文的文字将无法传送;
  3. SMTP 服务器会拒绝超过一定长度的邮件;
  4. 某些 SMTP 的实现并没有完全按照 SMTP 的因特网标准。

正因如此,一些非英语字符消息和二进制文件,图像,声音等非文字消息都不能在电子邮件中传输。 MIME 规定了用于表示各种各样的数据类型的符号化方法。

MIME 最早应用于电子邮件系统,但后来也应用到浏览器。服务器发送的多媒体到浏览器,浏览器获取该多媒体数据的MIME类型,从而让浏览器知道接收到的信息属于哪种类型。

二、所以什么是 MIME

MIME (Multipurpose Internet Mail Extensions)多用途互联网邮件扩展类型, MIME 并没有改动或者取代 STMP ,它是继续使用原来的邮件格式的情况下,增加了邮件主体的结构,并定义了传送非 ASCII 码的编码规则。

意思就是,MIME 邮件可以在现有的电子邮件程序和协议下传送。MIME 实际在用户和 SMTP 之间的一层,将用户输入的非 ASCII 码的内容通过转换为 ASCII 码的内容,让 SMTP 协议得以接受,并利用 SMTP 协议对邮件进行传输。收件人收到后,再通过 MIME 协议对 SMTP 协议的 ASCII 码进行解码,呈现在用户眼前的是正确的信息。

三、MIME 特点

MIME 主要包括以下三部分内容:

  1. 5个新的邮件首部字段,加入到原来邮件的首部中;
  2. 定义了许多邮件内容的格式,对多媒体电子邮件的表示方法进行了标准化;
  3. 定义了传送编码,对任何格式内容进行转换。

MIME 邮件首部

MIME 邮件首部是加入要原先 SMTP 邮件的首部字段。

MIME-Version

这个头提供了所用MIME的版本号。这个值习惯上为1.0。

Content-Type

它定义了数据类型和子类型,类型与子类型用"/"分隔,以便数据能被适当的处理。有效的类型有:text,image,audio,video,applications,multipart和message。注意任何一个二进制附件都应该被叫做application/octet-stream。

Content-Transfer-Encoding

它定义了对数据所执行的编码方式,可以使用7bit,8bit,binary ,quoted-printable,base64和custom中的一种编码方式。

Content-ID

邮件的唯一标识符。

Content-Description

这是可读字符串,说明此邮件主体是否是图像、音频和视频。

MIME 段部

MIME 段首部是出现在实际的 MIME 附件部分的首部,它只作用于该段中。除了 MIME-Version 字段,可以拥有以上任何头字段。

四、内容类型

MIME 标准元先定义了7个基本内容类型和15种子类型。但是允许客户端和服务器之间定义专用的内容类型,但是为了避免名字冲突,专用类型一般以 x- 开始。

Content-Type 子类型 说明
text(文本) plain, html, xml, css 不同格式的文本
image(图像) gif, jpeg, tiff 不同格式的静止图像
audio(音频) basic, mpeg, mp4 可听见的声音
video(视频) mpeg, mp4, quicktime 不同格式的影片
model(模型) vrml 3D 模型
application(应用) octet-stream, pdf, javascript, zip 不同应用程式产生的数据
message(报文) http, rfc822 封装的报文
multipart(多部分) mixed, alternative, parallel, digest 多种类型的组合

着重理解一下 multipart

  1. mixed

允许单个报文含有多个相互独立的子报文,每个子报文拥有自己的类型和编码。在 mixed 后面用到 boundary=BOUNDARY 关键字,定义分隔各部分子报文的分隔符,在邮件用利用 --BOUNDARY 进行分隔。

From:"hello" <hello@xxx.com>
To:<world@xxx.com>
Subject:hello world
Date:Mon,9 Oct 2006 16:51:34 +0800
MIME-Version:1.0
Content-Type:multipart/mixed;boundary=lines

--lines
Hello world

-lines
Content-Type:image/gif
Content-Transfer-Encoding: base64

... images ...
--lines
  1. alternative

允许单个报文含有同一数据的多种表示。例如对于同一个文本,可以用不同的编码形式,客户端根据自己实际选择格式化的形式。

  1. parallel

允许单个报文含有可同时显示的各个子部分,例如图片和声音子部分必须一起播放。

  1. digest

允许单个报文含有一组其他报文。

五、编码

Content-Transfer-Encoding: [mechanism]

其中,mechanism的值可以指定为“7bit”,“8bit”,“binary”,“quoted-printable”,“base64”。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 159,117评论 4 362
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,328评论 1 293
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,839评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 44,007评论 0 206
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,384评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,629评论 1 219
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,880评论 2 313
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,593评论 0 198
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,313评论 1 243
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,575评论 2 246
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,066评论 1 260
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,392评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,052评论 3 236
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,082评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,844评论 0 195
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,662评论 2 274
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,575评论 2 270

推荐阅读更多精彩内容