Большинство электронных писем, отправленных сегодня, имеют формат MIME (Multipupose Internet Mail Extensions). Это позволяет отправлять электронные письма с обычным текстом и версиями RTF / HTML, встроенными изображениями и вложениями. Расширения MIME могут быть добавлены к сообщению в стандартном формате RFC / 822, поэтому достигается обратная совместимость со старыми почтовыми системами.
Шаг 1
Загрузите содержимое электронного письма.
Видео дня
Шаг 2
Проверьте заголовок «Content-Type». Если тип контента является составным (например, «составной / смешанный», «составной / альтернативный» и т. Д.), Сообщение будет иметь несколько разделов для анализа. Если тип контента является составным, перейдите к шагам ниже.
Шаг 3
Заголовок Content-Type должен содержать уникальную строку, используемую кодом, который сгенерировал сообщение MIME, для обозначения границ части MIME. Пример:
Content-Type: составной / смешанный; border = "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 Content-Type: image / jpeg; name = "testimage.jpg" Кодирование передачи содержимого: base64 Описание содержимого: testimage.jpg Расположение содержимого: вложение; filename = "testimage.jpg"
/9j/4AAQSkZJRgABAQEAYABgAAD/2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkSEw8UHRofHh0a HBwgJC4nICIsIxwcKDcpLDAxNDQ0Hyc5PTgyPC4zNDL / 2wBDAQkJCQwLDBgNDRgyIRwhMjIyMjIy MjIyMjIyMjIyMjIyMjIyMjIyMjIjMyMjIyMjIjMyMjIyMjIyMjIjIyMjIjIyMjIyMjIyMjIyMjIy AhEBAxEB / 8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL / 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.