Как да декодирате имейл във формат MIME

Повечето имейли, изпратени днес, са форматирани в MIME (Multipupose Internet Mail Extensions). Това позволява изпращането на имейли с обикновен текст и богат текст/HTML версии, вградени изображения и прикачени файлове. MIME разширенията могат да бъдат добавени към съобщение в стандартен формат RFC/822, така че да се постигне обратна съвместимост с по-стари пощенски системи.

Етап 1

Заредете съдържанието на имейл съобщението.

Видео на деня

Стъпка 2

Проверете заглавката "Content-Type". Ако типът съдържание е многочастен (т.е. "многочаст/смесено", "многочастно/алтернативно" и т.н.), съобщението ще има множество секции за анализиране. Ако типът съдържание е многочастен, продължете със стъпките по-долу.

Стъпка 3

Заглавката Content-Type трябва да съдържа уникален низ, използван от кода, генерирал MIME съобщението, за да обозначи границите на MIME част. пример:

Тип съдържание: многочастно/смесено; граница="part_c7161025_fe8a_45f4_83ef_6befcfa5d021"

Граничният низ в този случай е "part_c7161025_fe8a_45f4_83ef_6befcfa5d021".

Стъпка 4

Всяка MIME част ще бъде разделена от граничния низ, предшестван от две тирета ("--") на празен ред. Ще трябва да сканирате съобщението ред по ред, търсейки границите на частта. Целият текст между границите с изключение на крайния CR/LF е част от тази MIME част.

Важно: Последната MIME част ще завърши с граничния низ, последван от още две тирета.

пример:

--part_c7161025_fe8a_45f4_83ef_6befcfa5d021 Първа MIME част.

--part_c7161025_fe8a_45f4_83ef_6befcfa5d021 Втора MIME част

--part_c7161025_fe8a_45f4_83ef_6befcfa5d021 Последна MIME част.

--part_c7161025_fe8a_45f4_83ef_6befcfa5d021--

Стъпка 5

След това всяка MIME част трябва да бъде анализирана. Форматът на всяка част MIME е подобен на оригиналното форматирано съобщение RFC/822. Той ще съдържа поредица от заглавки, последвани от празен ред, след това данните за тялото.

Стъпка 6

MIME част може сама по себе си да бъде многочастна, със свой собствен заглавка "Content-Type" и ограничителен низ. Вашият код трябва рекурсивно да анализира MIME части, докато достигне дъщерните възли.

Стъпка 7

MIME част може просто да бъде бинарен прикачен файл. В този случай обикновено се предоставя заглавка на Filename, заедно с кодирането на трансфер. BASE64 е популярен тип кодиране. В този случай цялото тяло на MIME част трябва да бъде декодирано BASE64. Като пример ето първите няколко реда от прикачено JPG изображение:

=NextPart_003_01C755EF.43F2628D Тип съдържание: изображение/jpeg; name="testimage.jpg" Content-Transfer-Encoding: base64 Content-Description: testimage.jpg Content-Disposition: attachment; filename="testimage.jpg"

/9j/4AAQSkZJRgABAQEAYABgAAD/2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkSEw8UHRofHh0a HBwgJC4nICIsIxwcKDcpLDAxNDQ0Hyc5PTgyPC4zNDL/2wBDAQkJCQwLDBgNDRgyIRwhMjIyMjIy MjIyMjIyMjIyMjIyMjIyMjIyMjIyMjImjMYAQIYMJMJMJQ AhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQA

Стъпка 8

HTML тялото на съобщението трябва да бъде в MIME секция с ContentType: Text/Html, вътре в ContentType: Multipart/Alternative MIME секция.

Стъпка 9

Текстът на съобщението трябва да бъде в MIME секция с ContentType: Text/plain, вътре в ContentType: Multipart/Alternative MIME секция.

Неща, от които се нуждаете

  • Познаване на компютърен език (напр. C++, C#, VB и др.).

  • Основни познания за формата на RFC/822 форматирано имейл съобщение.

Бакшиш

Консултирайте се с RFC 822 http://www.ietf.org/rfc/rfc0822.txt? номер=822 и RFC 1341 http://www.ietf.org/rfc/rfc1341.txt? номер=1341 за повече информация. Ако кодирате в C#, отлична безплатна библиотека е налична на адрес http://www.codeproject.com/csharp/mime_project.asp.