什么规则适用于MIME边界?

时间:2011-01-11 09:52:23

标签: http mime mime-types

当您编写MIME时,您将消息的不同块与特定边界分开。我由于某种原因找不到任何解释这个边界的文件,但这是我从例子中收集的内容:

  1. 边界可以是任何字母和数字的字符串,i。即“d29a0c638b540b23e9a29a3a9aebc900aeeb6a82”。

  2. 没有生成边界的规则,你可以md5sum你心爱的名字,在这里,你有你的边界。

  3. 如果您通过HTTP发送MIME,则必须添加标题“Content-Type”,指定您执行此操作,并且标题的边界内容可能如下所示:

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

  4. 在邮件正文中,边界应以“ - ”开头,如:

    - d29a0c638b540b23e9a29a3a9aebc900aeeb6a82

  5. 但遵循这些规则(以及this有用的答案)我无法生成服务器可以接受的POST查询。我错过了什么吗?我弄错了吗?

1 个答案:

答案 0 :(得分:61)

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 "--"

前面的--对于消息中使用的每个边界都是必需的,并且尾部--对于结束边界( close-delimiter )是必需的。因此,具有三个正文部分且boundary作为边界的多部分正文可以如下所示:

--boundary
1. body-part
--boundary
2. body-part
--boundary
3. body-part
--boundary--
相关问题