RFC2045譯文(3)

3. MIME頭字段(MIME Header Fields<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

MIME定義了許多新的RFC822頭字段,用以描述MIME實體內容(entity content)。這些頭字段至少會在以下兩個地方出現:

 

(1)      做爲規則的RFC822消息(message)頭信息的一部分。

 

(2)      在多部分結構(multipart construct)裏,存在於“部分主體”(body part)頭信息中。

 

這些頭字段的形式定義如下:

 

     entity-headers := [ content CRLF ]

                       [ encoding CRLF ]

                       [ id CRLF ]

                       [ description CRLF ]

                       *( MIME-extension-field CRLF )

 

     MIME-message-headers := entity-headers

                             fields

                             version CRLF

                          ; 當前BNF所暗含的實體頭信息

                          ; 順序可以被忽略。

     MIME-part-headers := entity-headers

                          [ fields ]

                          ; 任何不以“content-”開始的字段

                          ; 都沒有被定義,可以被忽略。

                          ; 當前BNF所暗含的實體頭信息

                          ; 順序也可以被忽略。

 

不同的MIME頭字段的語法細節會在下面的章節中說明。

 

4. MIME-Version頭字段

自從1982年發佈了RFC 822以來,實際上只存在這一種Internet消息格式標準,而且幾乎沒人意識到需要聲明那些正在使用中的格式。這篇文檔是一個補充RFC822的獨立說明。雖然在這篇文檔中所做的擴展已經被定義爲與RFC 822兼容,但是,郵件處理代理仍然需要知道一個消息是否是按照新的標準構成。

 

爲此,本文檔定義了一個新的頭字段:“MIME-Version”。它被用來聲明Internet消息主體(message body)所使用格式的版本號。

 

按照本文檔格式所構成的消息(message),必須按如下格式包含這個頭字段:

 

MIME-Version: 1.0

 

這個字段就是一個聲明,它表示消息的結構符合本文檔所規定的格式。

 

因爲今後的文檔中有可能再次擴展消息格式的標準,所以這裏給出MIME-Version頭字段的BNF

 

version := "MIME-Version" ":" 1*DIGIT "." 1*DIGIT

 

這樣,將來的格式說明符都被約束爲以小數點分隔的兩個整數,它們可能會替代或擴展字符:“1.0”。如果接收到一個消息,它的MIME-version值不是“1.0”,那麼就可以假定它不符合本文檔的規範。

 

還有一件值得注意的事情是,不可以使用MIME-Version機制來實行對媒體類型的版本控制。特別的,一些格式(如application/postscript)擁有包含在媒體格式內部的約定版本號。當這種約定存在時,MIME不會將其取代。當這種約定不存在時,MIME會在必要的時候使用“content-type”字段中的一個“version”參數進行聲明。

 

實現者要注意的問題:在檢查MIME-Version的時候,一定要忽略任何在RFC822中所定義的註釋部分。詳細的說,以下的MIME-Version字段是等價的:

 

        MIME-Version: 1.0

 

           MIME-Version: 1.0 (produced by MetaSend Vx.x)

 

           MIME-Version: (produced by MetaSend Vx.x) 1.0

 

           MIME-Version: 1.(produced by MetaSend Vx.x)0

 

當缺少MIME-Version字段時,接收郵件的代理(無論此代理是否符合MIME要求)都可以按照本地的約定,任意的解釋消息體。在當前的使用中存在的許多這樣的約定。應該注意到,在實際中非MIME消息可以包含任何內容。

 

無法確定一個非MIME郵件消息中只包含US-ASCII字符集的純文本內容,因爲這個消息很可能使用了一些非標準的比MIME更早出現的本地約定,或是包含其它字符集的內容或非文本的內容,這樣,消息就無法被自動的識別。(如用UUENCODE方式編碼的UNIX tar壓縮文件)

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章