email – Retro-analysing an Internet Message

Multipurpose Internet Mail Extensions (MIME), defined by RFC 2045 makes different blocks of content. These are separated by boundaries.

The boundary is set in the Content-Type: header.

Your mail contains the header

Content-Type: multipart/alternative; boundary=”_———-=_MCPart_1894767556″

This means that the following content is presented in several alternative ways (all of them have the same content, albeit in different formats, the client should pick the last one it can handle, see section 5.1.4 of rfc2046), and it uses a boundary of «_———-=_MCPart_1894767556»

The parts will then start with two dashes and the boundary that was defined, up to finally finish with two dashes, the boundary and two dashes.

The boundary itself is a random string. It only needs not to appear inside any of the content. It is possible to have several multipart pieces one inside another, and so it is important that an outer boundary isn’t also used inside, as well as the boundary string itself not appearing in the text.

You will find different ways in which those boundaries are generated. Apparently MaiChip code uses “_———-=MCPart” followed by a number.

As for the other questions:

don’t get how to distinguish the header from the body.

The headers and the body are separated by an empty line. The body starts after the first empty line.

Also note, each MIME part has a header section by itself. I would recommend starting with a mail sent just in plaintext, before diving into multipart ones.

Also there is two field “Received:” why ?

It passed through two servers (and I guess you removed some more Received lines, since it would have needed to reach your mail server, as well).