Существуют тонны RFC о том, как работает MIME.
MIME на самом деле является древовидной структурой:
+-multipart/mixed
+-multipart/related
| +-multipart/alternative
| | +-text/plain
| | +-text/html
| +-image/gif
| +-image/jpeg
+-application/x-zip-compressed
+-application/x-zip-compressed
Каждый многоэлементный объект MIME состоит из одной или нескольких частей.Части разделяются с помощью ограничителя границы.
multipart / mixed - используется, когда части не связаны (обычная электронная почта с вложениями)
multipart / related - используется, когда парс связан.Например, электронная почта HTML, содержащая изображения, используемые этим HTML.(Протокол Cid используется в HTML:)
multipart / alternative - указывает, что части содержат одинаковое содержимое, но в разных представлениях.Например, тот же текст в формате doc, html и обычный текст.
- Итак, сначала вам нужно проанализировать заголовки,
- Извлечь границы,
- Построить правильное дерево MIME
- Декодирование деталей с использованием правильных кодировок: Base64, QuotedPrintable
Суть , эта проблема уже решена .
Вы можете посмотреть на компонент Lumisoft (у него много проблем, но он бесплатный).
Вы также можете проверить коммерческие продукты, такие как мой компонент электронной почты Mail.dll .