Какие правила применяются к границе MIME?

Когда вы пишете MIME, вы разделяете разные фрагменты своего сообщения определенной границей. Мне почему-то не удалось найти какой-либо документации, объясняющей эту границу, но вот что я собрал из примеров:

  1. Граница может быть любой строкой букв и цифр, т.е. е. "d29a0c638b540b23e9a29a3a9aebc900aeeb6a82".

  2. Нет никаких правил для генерации границы, вы можете просто md5суммировать имя вашего возлюбленного, и вот, вы получили свою границу.

  3. Если вы отправляете MIME через HTTP, вы должны добавить заголовок «Content-Type», указав, что вы это делаете, и ваша граница, содержимое заголовка может выглядеть следующим образом:

    составные/данные формы; граница = d29a0c638b540b23e9a29a3a9aebc900aeeb6a82

  4. В теле сообщения перед границей должен стоять "--", например:

    --d29a0c638b540b23e9a29a3a9aebc900aeeb6a82

Но следуя этим правилам (и этому полезному ответу) Мне не удалось сгенерировать POST-запрос, который принял бы сервер. Я что-то пропустил? Я что-то не так понял?


person Septagram    schedule 11.01.2011    source источник


Ответы (1)


синтаксис границы:

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

И тело составного объекта имеет синтаксис (только важные части ):

 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--
person Gumbo    schedule 11.01.2011
comment
пожалуйста, объясните также transport-padding - person Adarsh Rajput; 21.04.2017
comment
нам нужен CRLF после закрытия границы? - person datdinhquoc; 07.09.2017
comment
@johnlowvale [CRLF epilogue] поэтому я предполагаю, что необязательно заканчивать CRLF в соответствии с bnf грамматика. См. раздел Варианты. - person Sany Liew; 17.11.2017
comment
можно ли использовать смайлики на границе? - person Marais Rossouw; 10.11.2020
comment
@MaraisRossouw: только буквенно-цифровые символы US-ASCII. Эмодзи не может быть представлен в этом диапазоне (ну, вы можете сначала использовать base64 для строки, но зачем?) - person Oleg Valter; 08.12.2020