什么规则适用于MIME边界?

Sep*_*ram 37 mime http mime-types

在编写MIME时,可以将消息的不同块与特定边界分开.我出于某种原因失败了找到解释这个边界的任何文件,但这是我从例子中收集的内容:

  1. 边界可以是任何字母和数字的字符串,即"d29a0c638b540b23e9a29a3a9aebc900aeeb6a82".

  2. 没有生成边界的规则,你可以只是md5sum你心爱的名字,在这里,你已经有了你的边界.

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

    多部分/格式的数据; 边界= d29a0c638b540b23e9a29a3a9aebc900aeeb6a82

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

    --d29a0c638b540b23e9a29a3a9aebc900aeeb6a82

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

Gum*_*mbo 61

边界语法是:

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

并且多部分实体的主体具有语法(仅重要部分):

 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 "--"
Run Code Online (Sandbox Code Playgroud)

前面--对于消息中使用的每个边界都是强制性的,并且尾部--对于结束边界(close-delimiter)是强制性的.因此,一个多体三体部分与boundary作为边界可以是这样的:

--boundary
1. body-part
--boundary
2. body-part
--boundary
3. body-part
--boundary--
Run Code Online (Sandbox Code Playgroud)

  • 请解释*transport-padding* (2认同)
  • 结束边界后我们需要CRLF吗? (2认同)