2011-01-11 72 views
35

當您正在編寫MIME時,您會將消息的不同塊與特定邊界分開。我由於某種原因失敗找到任何文件,說明這個邊界,但這裏是我從收集的例子:什麼規則適用於MIME邊界?

  1. 邊界可以是字母和數字的任意字符串,我。即「d29a0c638b540b23e9a29a3a9aebc900aeeb6a82」。

  2. 沒有生成邊界的規則,你只需要md5sum你心愛的名字,在這裏你走了,你已經有了你的邊界。

  3. 如果通過HTTP發送MIME,你必須添加一個頭「內容類型」指定你做什麼,和你的邊界,一個標題的內容可能是這樣的:

    的multipart/form-data的;邊界= d29a0c638b540b23e9a29a3a9aebc900aeeb6a82

  4. 在郵件的正文中,邊界應該與之前 「 - 」,如:

    --d29a0c638b540b23e9a29a3a9aebc900aeeb6a82

但以下這些規則(和this有幫助答案)我未能生成服務器將接受的POST查詢。我錯過了什麼嗎?我有什麼問題嗎?

回答

57

syntax of a boundary是:

boundary := 0*69<bchars> bcharsnospace 
bchars := bcharsnospace/" " 
bcharsnospace := DIGIT/ALPHA/"'"/"("/")"/
        "+"/"_"/","/"-"/"."/
        "/"/":"/"="/"?" 

而且body of a multipart entity有語法(只重要的部分):

multipart-body := [preamble CRLF] 
        dash-boundary transport-padding CRLF 
        body-part *encapsulation 
        close-delimiter transport-padding 
        [CRLF epilogue] 
dash-boundary := "--" boundary 
encapsulation := delimiter transport-padding 
        CRLF body-part 
delimiter := CRLF dash-boundary 
close-delimiter := delimiter "--" 

的前述--是強制性的每在...中使用的邊界消息以及結尾邊界--是必需的(關閉分隔符)。因此,一個多體三體部分與boundary邊界可以是這樣的:

--boundary 
1. body-part 
--boundary 
2. body-part 
--boundary 
3. body-part 
--boundary-- 
+1

請解釋*傳輸填充*也 – 2017-04-21 08:44:54