Как посмотреть исходный код письма
- Получите исходный текст письма из почтового клиента (см. таблицу ниже) и вставьте его или перетащите на страницу файл
.emlили.mht. - В сводке видны декодированные From, To, Cc, Subject, Date и Message-ID. Все заголовки показывает каждый заголовок с декодированным и исходным значением.
- Читайте Тело письма как обычный текст или HTML. HTML показывается в песочнице.
- В разделе Вложения перечислены файлы с именем, типом, размером и content ID, с кнопкой Скачать и превью для картинок.
- Структура MIME показывает, как вложены части. Это помогает, когда вложение будто бы пропало.
| Почтовый клиент | Где найти исходный код |
|---|---|
| Gmail | Меню письма (⋮) → «Показать оригинал», затем «Скачать оригинал» |
| Outlook в браузере | Меню письма (…) → View → View message source (просмотр исходного кода сообщения) |
| Thunderbird | «Вид» → «Исходный текст сообщения» (Ctrl+U) или «Файл» → «Сохранить как» для .eml |
| Apple Mail | View → Message → Raw Source (необработанный исходный код) |
Что умеет декодер
- Закодированные заголовки: слова RFC 2047 в Base64 (
B) и quoted-printable (Q), склейка соседних слов, любая кодировка, которую знает браузер, а также заголовки в сыром UTF-8. - Имена вложений в форме RFC 2231, например
filename*=UTF-8''Rechnung%20M%C3%A4rz.pdf, и разбитые продолженияfilename*0*=. - Тела в
base64иquoted-printable, декодированные в объявленной кодировке.f=C3=BCrпревращается вfür. - Вложенные письма: пересланное письмо, приложенное как
message/rfc822, разбирается так же, как внешнее. - Встроенные картинки: ссылки
cid:в HTML связываются с приложенными изображениями. - Неполный ввод: отдельная MIME-часть в Base64, письмо, целиком закодированное в Base64, или multipart-тело, которое начинается с
--boundaryбез заголовков.
Письмо, целиком закодированное в Base64, обычно начинается с UmV0dXJuLVBhdGg6 (Return-Path:) или UmVjZWl2ZWQ6 (Received:). Вставляйте как есть: декодер сначала его развернёт.
Проверка подозрительного письма
О фишинге заголовки говорят больше, чем тело. Что сравнить в Все заголовки:
- From с Return-Path и Reply-To. Классический признак: адрес для ответа на другом домене.
- Authentication-Results, который добавляет принимающий сервер:
spf=,dkim=иdmarc=со значениями pass или fail. - Received: если читать эти строки снизу вверх, они показывают путь от сервера отправителя до вашего.
- Типы вложений: вложение
.html,.isoили.zipот незнакомого отправителя заслуживает подозрения, как и двойное расширение вродеinvoice.pdf.html.
Поскольку внешнее содержимое заблокировано, просмотр HTML-тела здесь не загружает пиксели отслеживания и не подтверждает, что ваш адрес читают. CSS письма тоже отбрасывается, так что рассылки выглядят проще, чем в почтовом клиенте.
Извлечение вложений на Python
from email import policy
from email.parser import BytesParser
with open("message.eml", "rb") as f:
msg = BytesParser(policy=policy.default).parse(f)
print(msg["Subject"])
for part in msg.iter_attachments():
name = part.get_filename()
with open(name, "wb") as out:
out.write(part.get_payload(decode=True))
print("saved", name)
policy.default декодирует заголовки с закодированными словами, так что msg["Subject"] сразу читаем. В реальном коде очищайте name перед записью: его прислал отправитель. Как кодируются вложения, подробнее рассказывает статья Base64 в электронной почте, а кодировщик MIME Base64 выдаёт формат с переносом по 76 символов.
Известные ограничения
- Файлы Outlook
.msgне поддерживаются. Частьwinmail.dat(TNEF) показывается как вложение, но не распаковывается. - Ссылки внутри HTML-тела намеренно не работают.
- Письма с огромным числом MIME-частей обрезаются с предупреждением.
Вопросы и ответы
Как открыть файл .eml без Outlook?
Перетащите его на эту страницу. Страница покажет заголовки, текстовое и HTML-тело и все вложения; вложения можно скачать по одному. Файлы до 64 MB читаются прямо в браузере.
Что значит =?UTF-8?B?…?= в теме письма?
Это закодированное слово по RFC 2047: B означает, что текст между знаками записан в Base64, а Q обозначает вариант quoted-printable. =?UTF-8?B?UmVjaG51bmcgTcOkcno=?= декодируется в Rechnung März. Декодер показывает декодированное и исходное значение рядом.
Безопасно ли смотреть здесь подозрительное письмо?
HTML-тело отрисовывается в изолированном фрейме без скриптов, форм и рабочих ссылок, а внешние картинки и пиксели отслеживания заблокированы, так что отправитель ничего не узнает о том, что письмо открыли. Вложения выводятся списком, их можно скачать, но страница их никогда не открывает.
Можно открыть файлы Outlook .msg?
Нет. У .msg собственный двоичный формат Outlook, это не MIME. Откройте то же письмо в веб-версии Outlook, выберите просмотр исходного кода сообщения и вставьте сюда этот текст.