Більшість електронних листів, які надсилаються сьогодні, мають формат 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.