When you are writing MIME, you separate different chunks of your message with a certain boundary. I failed for some reason to find any documentation explaining this boundary, but here’s what I gathered from examples:
-
Boundary can be any string of letters and numbers, i. e. “d29a0c638b540b23e9a29a3a9aebc900aeeb6a82”.
-
There are no rules for generating the boundary, you can just md5sum the name of your beloved, and here you go, you’ve got your boundary.
-
If you are sending MIME over HTTP, you must add a header “Content-Type” specifying that you do, and your boundary, contents of a header may look like this:
multipart/form-data; boundary=d29a0c638b540b23e9a29a3a9aebc900aeeb6a82
-
In the body of your message, the boundary should be preceded with “–“, like:
–d29a0c638b540b23e9a29a3a9aebc900aeeb6a82
But following these rules (and this helpful answer) I failed to generate POST query that server would accept. Am I missing something? Did I get something wrong?
The syntax of a boundary is:
And the body of a multipart entity has the syntax (only the important parts):
The preceeding
--is mandatory for every boundary used in the message and the trailing--is mandatory for the closing boundary (close-delimiter). So a multipart body with three body-parts withboundaryas boundary can look like this: