MIME協議(四) -- MIME訊息的頭欄位
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