电子邮件基本格式(MIME格式)

总的来说,参照rfc4021标准,mime格式分为消息头和消息体两部分(邮件头和邮件体)。
本文大致描述邮件格式,仅供参考。

邮件头

邮件头包含了发件人、收件人、主题、时间、MIME版本、内容的类型、内容的传输编码方式等重要信息。每条信息称为一个域,由域名后加冒号(“ : ”)和信息内容构成,可以是一行,也可以占用多行。域的首行必须顶头写(即左边不能有空白字符(空格和制表符));续行则必须以空白字符打头,且第一个空白字符不是信息本身固有的,解码时要过滤掉。另外,邮件头中不允许出现空行。

例如:

Date: Wed, 15 Aug 2017 10:09:00 +0800
From: [email protected]
To: "simba" 
Cc: "simba" 
BCC: "simba" 
Subject: test
Message-ID:  <[email protected]>
X-mailer: Foxmail 6, 15, 201, 21 [cn]
X-Spam: yes
X-Rmilter-Greylist: Sender IP ::1 is whitelisted by configuration
Mime-Version: 1.0

包含内容解释及其他信息如下:

邮件头

域名                        |         含义              |       添加者  
Received                    |       传输路径            |   各级邮件服务器
Return-Path                 |       回复地址            |   目标邮件服务器
Delivered-To                |       发送地址            |   目标邮件服务器
Reply-To                    |       回复地址            |   邮件的创建者
From                        |       发件人地址          |    邮件的创建者
To                          |       收件人地址          |    邮件的创建者
Cc                          |       抄送地址            |   邮件的创建者
Bcc                         |       暗送地址            |   邮件的创建者
Date                        |       日期和时间          |    邮件的创建者
Subject                     |       主题               |    邮件的创建者
Message-ID                  |       消息ID             |    邮件的创建者
MIME-Version                |       MIME版本           |    邮件的创建者
Content-Type                |       内容的类型          |    邮件的创建者
Content-Transfer-Encoding   |       内容的传输编码方式   |    邮件的创建者

段头

域名                                  含义
Content-Type                    |   段体的类型
Content-Transfer-Encoding       |   段体的传输编码方式
Content-Disposition             |   段体的安排方式
Content-ID                      |   段体的ID
Content-Location                |   段体的位置(路径)
Content-Base                    |   段体的基位置

邮件体

邮件内容有各种各样的(既纯文本,超文本,内嵌资源(比如内嵌在超文本中的图片),附件的组合),服务器通过第一个content-type判断邮件内容,如果包含了其他内容,邮件体被分为多个段,段中可包含段,每个段又包含段头和段体两部分。

+----------------------------------------multipart/mixed----------------------------------------+
|                                                                                               |
|                                                                                               |
|   +---------------------------multipart/related---------------------------+                   |
|   |                                                                       |                   |
|   |                                                                       |                   |
|   |   +---------mutipart/alternative--------------+   +-------------+     |   +-------+       |
|   |   |                                           |   |   内嵌资源   |     |   |  附件  |      |
|   |   |                                           |   +-------------+     |   +-------+       |
|   |   |   +---------------+   +---------------+   |                       |                   |
|   |   |   |   纯文本正文   |   |   超文本正文    |   |                       |                  |
|   |   |   +---------------+   +---------------+   |   +-------------+     |   +-------+       |
|   |   |                                           |   |   内嵌资源   |     |   |  附件  |      |
|   |   |                                           |   +-------------+     |   +-------+       |
|   |   +-------------------------------------------+                       |                   |
|   |                                                                       |                   |
|   |                                                                       |                   |
|   +-----------------------------------------------------------------------+                   |
|                                                                                               |
|                                                                                               |
+-----------------------------------------------------------------------------------------------+

可以看出,如果在邮件中要添加附件,必须定义multipart/mixed段;如果存在内嵌资源,至少要定义multipart/related段;如果纯文本与超文本共存,至少要定义multipart/alternative段。什么是“至少”?举个例子说,如果只有纯文本与超文本正文,那么在邮件头中将类型扩大化,定义为multipart/related,甚至multipart/mixed,都是允许的。

你可能感兴趣的:(技术。)