简介

邮件的格式对所有不同的E-mail协议来说都非常重要。可以用两种方式来看email信息,简单文本信息和多用途Internet邮件扩展形式MIME(Mutlipurpose InternetMail Extensions).本文主要是讲解MIME格式。

MIME作用

为了能通过电子邮件发送非ASCII数据,IETF定义了多用途Internet邮件扩充MIME(Multipurpose Internet MailExtension)。MIME没有改动SMTP或POP3,也没有替代它们,而是允许用ASCII码对任意数据进行编码,然后在标准电子邮件中传输。

为了适应任意数据类型和表示,每个MIME邮件包含告知接收方数据类型和所用编码的信息。MIME的信息位于邮件首部中,MIME首部各行指明了MIME的版本,发送数据的类型以及将数据转换为ASCII码所用的编码格式。

MIME实例

下面的例子显示了一个MIME邮件,其中包含用标准GIF(Graphics InterchangeFormat)表示的一幅图片。GIF图像使用base64编码格式转换为7位ASCII码表示。

From: bill@example.com
To: john@example.com
MIME-Version: 1.0
Content-Type: image/gif
Content-Transfer-Encoding: base64
.....date for the image......

首部的MIME-Version表明该邮件使用MIME协议版本1.0编写邮件,Content-Type行声明数据是GIF图像,而Content-Transfer-Encoding行声明使用base64编码格式将图像转换为ASCII码。为了查看图像,接收方的邮件系统首先将base64编码转换成二进制,然后运行一个应用程序在用户屏幕上显示GIF图像。

MIME标准规定Content-Type声明必须含两个标识符:一个是内容类型(content type),一个是子类型(subtype),中间用”/”分开。
我们接下来显示一个纯文本信息的MIME邮件,读者可以参考上面的例子来理解MIME的编码
Content-Type: text/plain; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
To: jinguang.liu@qq.com
From: jliu@163.com
Subject: This is a test email
Date: Wed, 22 Apr 2015 22:26:32 +0800
Message-ID: <20150422142632.10808.43927@bob-PC>

Hello,
this is an autotest email.
---jliu.

MIME的Content-Type类型

标准定义了7种基本类型以及每种类型的子类型和传输编码。如image类型的子类型必须为jpeg或gif,text不能使用这两种类型。

7种基本内容类型:text(文本,例如一个文档),image(图像),audio(音频),video(视频),application(应用程序,程序的原始数据),multipart(多邮件部分,每个有单独的内容类型和编码方式),message(邮件,一个完整的电子邮件或对邮件的外部应用,如一个FTP服务器和文件名)。

MIME的multipart类型详解

MIME的多部分(multipart)内容类型很有用,因为它增加了相当大的灵活性。标准为多部分邮件定义了4种可能的子类型,每种子类型都提供重要功能。

混合(mixed)子类型:允许单个邮件含有多个独立的子部分,每个子部分可有独立的类型和编码。使用混合类型的多部分邮件可在单个邮件中包含文本、图片和音频等

替代(alternative)子类型:允许单个邮件含有统一数据的多种表示。当给多个使用不同硬件和软件系统的接收方发送邮件时,替代类型的多部分邮件的多种表示非常有用,例如:用户发送文档时,既包括普通ASCII文本,也包含格式化的文档,从而允许支持格式化文档查看的客户端程序给用户显示格式化的文档。

并行(parallel)子类型:允许单个邮件含有必须一同查看的各个子部分(如视频和音频部分必须一起播放)

文摘(digest)子类型:允许单个邮件含有一系列其它邮件(如关于一次讨论的一系列邮件)

总结

本文介绍的MIME知识是通过Python email模块编写邮件的基础,能够使我们更加深入的理解email提供MIME功能。

更多相关文章

  1. 在Python中强制使用函数参数类型?
  2. python常用数据类型-字典
  3. Python发邮件小工具
  4. 后端传给前端int 类型数据自增或自减
  5. 变量和数据类型
  6. Python发送邮件(最全)
  7. python实现邮件发送功能
  8. Python_基础(命名,数据类型,循环)
  9. Python定义函数时,不同参数类型的传递

随机推荐

  1. Android之分享篇(配图适合新人):腾讯分享(QQ
  2. Android P 图形显示系统(九) Android图形显
  3. android之调用webservice 实现图片上传
  4. Android内核开发:源码的版本与分支详解
  5. Android中View.setPressed是怎么出现按压
  6. Google:Android 2.3在所有Android系统设备
  7. 搭建Android应用程序的服务器
  8. Android游戏Graphics绘图之图像像素操作
  9. 价格战拉上了Android平板电脑
  10. Android与linux的区别与联系