Обратите внимание, что сообщение электронной почты с вложением JPEG — это, по сути, многокомпонентное сообщение MIME, содержащее две части: в одной находится текст сообщения, а в другой — изображение JPEG.
Не вдаваясь в подробности описания формата сообщения MIME, представим пример многокомпонентного сообщения, который позволит получить представление о том, как оно устроено. Это сообщение состоит из четырех частей: 7-разрядного текстового сообщения, которое находится в начале данного сообщения, звукового файла Microsoft WAV в кодировке base64, файла JPEG в кодировке base64 и заключительной 7-разрядной части, которая содержит некоторые многосимвольные разделители и подпись электронной почты. (Двоичные вложения сократим для экономии места.)
Обратите внимание, что каждая часть сообщения имеет собственный заголовок и тело, а отдельные части разделены короткой уникальной граничной строкой, начинающейся с двух дефисов. Все сообщение в целом имеет собственный заголовок, который представляет собой надмножество почтового заголовка Internet, соответствующего RFC 822, и включает поле Content-Type: со значением multipart/mixed. Это, в основном, все, что должен знать программист о формате MIME. Остальную работу успешно выполнят модули MIME.
Пример MIME-Version: 1.0 Content-Type: multipart/mixed; boundarys=”PD9eITqhkK” Content-Transfer-Encoding: 7bit Me ssage-ID: X-Mailer: VM 6.72 under 21.1 "20 Minutes to Nikko" XEmacs Lucid (patch 2) Reply-То: lstein@cshl.org From: Lincoln Stein To: jdoe@acme.org Subject: hi there Date: Sun, 9 Jul 2013 14:02:01 -0400 (EOT)
--PD9elTqhkK Content-Type: text/plain; charset=us-ascii Content-Description: message body text Content-Transfer-Encoding: 7bit Hello John! Here are two binary attachments for you to look at. … --PD9eITqhkK Content-Type: audio/x-wav Content-Disposition: attachment; filename="locutus.wav" Content-Transfer-Encoding: base64 … --PD9eITqhkK Content-Type: image/jpeg Content-Disposition: inline; filename="bj_aimi4067.jpg" Content-Transfer-Encoding: base64 … --PD9eITqhkK Content-Type: text/plain; charset=us-ascii Content-Description: message body and .signature Content-Transfer-Encoding: 7bit … --PD9eITqhkK