当前位置: 主页 > 服务器技术 > Mail服务器 > 分析邮件传输中的MIME顶级类型

分析邮件传输中的MIME顶级类型

时间:2010-10-17来源:互联网 点击:
MIME顶级类型中有一个相当重要的名为MultiPart的类型需要专门讨论。就像一个web页面中可以包含多个对象(例如文本、图像、JAVA小应用程序等)那样,一个电子邮件消息也可以包含多个对象。我们已经知道,Web是通过各自独立的HTTP响应消息传送每个对象的。因特网电子邮件则相反,它把同一个邮件消息的所有对象(即部分)封装在单个消息中。具体地说,当一个多媒体消息含有不止一个对象时(例如多个图像或ASCII文本与图像共存),其Content-Type:头部的值通常为multipart/mixed。这头部向接收用户代理指出本消息中含有多个对象。既然多个对象共处同一个邮件消息,接收用户代理就得有办法确定:(1)每个对象的起止位置,(2)每个非ASCII文本对象的传送编码方式,(3)每个对象的内容类型。这是通过在每个对象之间放置边界字符串,并在每个对象之前定义Content-Type:和Content-Transfer-Encoding:头部实现的。

  为便于理解multipart/mixed,让我们看一个例子。假设Alice想给BOb发送一个邮件消息,其内容为一些ASCII文本,后跟一个JPEG图像,再跟一些ASCII文本。Alice使用自己的用户代理编辑文本并附上图像后,该用户代理生成一个大体如下的邮件消息;

  From:alice@crepes.fr
  To:bob@hamburger.edu
  MIME-Version:1.0
  Content-type:multipart/mixed;Boundary=StartOfNextPart

  --StartOfNextPart
  Dear bob,
  Please look at the picture
  --StartOfNextPart
  Content-Transfer-Encoding:base64
  Content-type:image/jpeg
  (...base64编码的数据...
  ...base64编码的数据...)
  --StartOfNextPart
  there is some acsii letter here

  从中我们可以看出,Content-type:头部的Boundary参数用于指定分隔各个部分的边界字符串。在邮件消息体中,该分隔字符串以两个短划线开头,以CRLF结尾。

  Received:头部

  我们已经知道一个电子邮件消息由多个部件构成。信体是邮件消息的核心,它是发送者发送给接收者的真正数据。对于多部分邮件消息来说,其信体本身由多个部分组成,而每个部分又有一个或多个说明其数据性质的头部。信体之前是一个空行和由多个邮件消息头部组成的信头。这些头部既包括在RFC 822中定义的头部,例如From:、To:和subject:也包括MIME头部,例如Content-type:和Content-Transfer-Encoding:。除此之外,我们还得提及由SMTP接收服务器插到每个邮件消息的项端的Received:头部,它给出了发出本消息的SMTP服务器的主机名(“from”)、收取本消息的SMTP服务器的主机名(“by”)以及接收服务器收取本消息的时间。因此,作为接收者的用户看到的邮件消息大体如下:


  Received:from crepes.fr by hamburger.edu;18 Oct 2005 05:53:37 GMT
  From:alice@crepes.fr
  To:bob@hamburger.edu
  MIME-Version:1.0
  Content-type:multipart/mixed;Boundary=StartOfNextPart

  --StartOfNextPart
  Dear bob,
  Please look at the picture
  --StartOfNextPart
  Content-Transfer-Encoding:base64
  Content-type:image/jpeg
  (...base64编码的数据...
  ...base64编码的数据...)
  --StartOfNextPart
  there is some acsii letter here

  有时候,单个邮件消息会有多个Received:头部,有的还会有一个较复杂的Return-path:头部。这是因为邮件消息在从发送者的主机到接收者的主机的传送过程中,可能会被转发到不止一个SMTP服务器。例如,如果Bob指示他在主机hamburger.edu上的邮件服务器把他的所有邮件转发到主机sushi.jp,那么他通过其用户代理看到的邮件消息可能以大体如下的两行开头:

  Received:from hamburger.edu by sushi.jp;18 Oct 2005 05:55:37 GMT

  Received:from crepes.fr by hamburger.edu;18 Oct 2005 05:53:37 GMT

  这些头部给接收用户代理提供了相应邮件消息访问过的SMTP服务器及访问时间的踪迹。SMTP规范所在的RPC 822详细定义丁Received:头部的语法。

站长资讯网
. TAG: 邮件传输 MIME类型
推荐内容最近更新人气排行
关于我们 | 友情链接 | 网址推荐 | 常用资讯 | 网站地图 | RSS | 留言