Як розшифрувати електронний лист у форматі MIME

click fraud protection

Більшість електронних листів, які надсилаються сьогодні, мають формат MIME (багатофункціональні розширення Інтернет-пошти). Це дозволяє надсилати електронні листи у вигляді простого тексту та форматованого тексту/HTML, вбудованих зображень та вкладень. Розширення MIME можуть бути додані до повідомлення в стандартному форматі RFC/822, щоб досягти зворотної сумісності зі старими поштовими системами.

Крок 1

Завантажте вміст повідомлення електронної пошти.

Відео дня

Крок 2

Перевірте заголовок «Content-Type». Якщо тип вмісту багатокомпонентний (тобто «багато-/змішаний», «багато-/альтернативний» тощо), повідомлення матиме декілька розділів для аналізу. Якщо тип вмісту багатокомпонентний, перейдіть до кроків нижче.

Крок 3

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

Тип вмісту: багатокомпонентний/змішаний; boundary="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 може бути просто бінарним вкладенням. У цьому випадку зазвичай надається заголовок імені файлу разом із кодуванням передачі. BASE64 є популярним типом кодування. У цьому випадку все тіло частини MIME має бути декодовано BASE64. Як приклад, ось кілька перших рядків прикріпленого зображення JPG:

=NextPart_003_01C755EF.43F2628D Тип вмісту: image/jpeg; name="testimage.jpg" Content-Transfer-Encoding: base64 Content-Description: testimage.jpg Content-Disposition: attachment; filename="testimage.jpg"

/9j/4AAQSkZJRgABAQEAYABgAAD/2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkSEw8UHRofHh0a HBwgJC4nICIsIxwcKDcpLDAxNDQ0Hyc5PTgyPC4zNDL/2wBDAQkJCQwLDBgNDRgyIRwhMjIyMjIy MjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMJAQ 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.