1. 程式人生 > >MIME協議(四) -- MIME訊息的頭欄位

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