MIME消息的頭字段
4.1 Content-Type
對於表示某個具體資源的MIME消息,它的消息頭中需要指定資源的數據類型;對於MIME組合消息,它的消息頭中需要指定組合關系。具體資源的數據類型和組合消息的組合關系,都是通過消息頭中的Content-Type頭字段來指定的。Content-Type字段中的內容以“主類型/子類型”的形式出現,主類型有text、image、audio、video、application、multipart、message等,分別表示文本、圖片、音頻、視頻、應用程序、組合結構、消息等。每個主類型下面都有多個子類型,例如text主類型包含plain、html、xml、css等子類型。multipart主類型用於表示MIME組合消息,它是MIME協議中最重要的一種類型。一封MIME郵件中的MIME消息可以有三種組合關系:混合、關聯、選擇,它們對應MIME類型如下:
— multipart/mixed
表示消息體中的內容是混和組合類型,內容可以是文本、聲音和附件等不同郵件內容的混和體,例如圖5中的整封郵件的MIME類型就必須定義為multipart/mixed。
— multipart/related
表示消息體中的內容是關聯(依賴)組合類型,例如圖5中的郵件正文要使用HTML代碼引用內嵌的圖片資源,它們組合成的MIME消息的MIME類型就應該定義為multipart/related,表示其中某些資源(HTML代碼)要引用(依賴)另外的資源(圖像數據),引用資源與被引用的資源必須組合成multipart/related類型的MIME組合消息。
— multipart/alternative
表示消息體中的內容是選擇組合類型,例如一封郵件的郵件正文同時采用HTML格式和普通文本格式進行表達時,就可以將它們嵌套在一個multipart/alternative類型的MIME組合消息中。這種做法的好處在於如果郵件閱讀程序不支持HTML格式時,可以采用其中的文本格式進行替代。
一封最復雜的電子郵件的基本情況為:含有郵件正文和郵件附件,郵件正文可以同時使用HTML格式和普通文本格式表示,並且HTML格式的正文中又引用了其他的內嵌資源。對於這種最復雜的電子郵件,可以采用如圖6所示的MIME消息結構進行描述。
圖6
從圖6中可以看出,如果要在郵件中要添加附件,就必須將整封郵件的MIME類型定義為multipart/mixed;如果要在HTML格式的正文中引用內嵌資源,那就要定義multipart/related類型的MIME消息;如果普通文本內容與HTML文本內容共存,那就要定義multipart/alternative類型的MIME消息。
注意:如果整封郵件中只有普通文本內容與HTML文本內容,那么整封郵件的MIME類型則應定義為multipart/ alternative;如果整封郵件中包含有HTML文本內容和內嵌資源,但不包含附件,那么整封郵件的MIME類型則應定義為multipart/related。
在Content-type頭字段中除了可以定義消息體的MIME類型外,還可以在MIME類型后面包含相應的屬性,屬性以“屬性名=屬性值”的形式出現,屬性與MIME類型之間采用分號(;)分隔,如下所示:
Content-Type:multipart/mixed;boundary="----=_NextPart_000_0050_01C"
常用的屬性如表1所示。
表1
主 類 型 |
屬 性 名 |
說 明 |
text |
charset |
用於說明文本內容的字符集編碼 |
image |
name |
用於說明圖片文件的文件名 |
application |
name |
用於說明應用程序的文件名 |
multipart |
boundary |
用於定義MIME消息之間的分隔符 |
4.2 其他頭字段
除了Content-Type頭字段之外,MIME協議中還定義Content- Transfer-Encoding、Content-Disposition、Content-ID、Content-Location、Content-Base等幾個重要的頭字段,這幾個頭字段需要與Content-type頭字段配合使用,它們的作用如下:
— Content-Transfer-Encoding頭字段
Content-Transfer-Encoding頭字段用於指定MIME消息體中的內容所采用的郵件編碼方式,詳細細節請參看4節的講解。
— Content-Disposition頭字段
Content-Disposition頭字段用於指定郵件閱讀程序處理數據內容的方式,有inline和attachment兩種標准方式,inline表示直接處理,而attachment表示當做附件處理。如果將Content-Disposition設置為attachment,在其后還可以指定filename屬性,如下所示:
Content-Disposition: attachment; filename="1.bmp"
上面的MIME頭字段表示MIME消息體的內容為郵件附件,附件名"1.bmp"。
— Content-ID頭字段
Content-ID頭字段用於為“multipart/related”組合消息中的內嵌資源指定一個唯一標識號,在HTML格式的正文中可以使用這個唯一標識號來引用該內嵌資源。例如,假設將一個表示內嵌圖片的MIME消息的Content-ID頭字段設置為如下形式:
Content-ID: it315logo_gif
那么,在HTML正文中就需要使用如下HTML語句來引用該圖片資源:
<img src="cid:it315logo_gif">
注意,在引用Content-ID頭字段標識的內嵌資源時,要在資源的唯一標識號前面加上“cid:”,以說明要采用唯一標識號對資源進行引用。
— Content-Location頭字段
Content-Location頭字段用於為內嵌資源設置一個URI地址,這個URI地址可以是絕對或相對的。當使用Content- Location頭字段為一個內嵌資源指定一個URI地址后,在HTML格式的正文中也可以使用這個URI來引用該內嵌資源。例如,假設將一個表示內嵌圖片的MIME消息的Content- Location頭字段設置為如下形式:
Content-Location:http://www.it315.org/images/it315logo.gif
那么,在HTML正文中就可以使用如下HTML語句來引用該圖片資源:
<img src="http://www.it315.org/images/it315logo.gif">
— Content-Base頭字段
Content-Base頭字段用於為內嵌資源設置一個基准路徑,只有這樣,Content-Location頭字段中設置的URI才可以采用相對地址。例如,假設將一個表示內嵌圖片的MIME消息的Content-Base和Content-Location頭字段設置為如下形式:
Content-Base: http://www.it315.org/images/
Content-Location: it315logo.gif
那么,內嵌資源的完整路徑就是Content-Base頭字段設置的基准路徑與Content-Location頭字段設置的相對路徑相加的結果,在HTML正文中就可以使用如下HTML語句來引用該圖片資源:
<img src="http://www.it315.org/images/it315logo.gif">
轉自 :https://www.cnblogs.com/dusthunter/archive/2013/02/03/2890691.html