Как отличить "настоящее" вложение почты от картинки в html-почте?

Я возился с OpenPop, библиотекой, написанной на C# для получения почты POP3. Кажется, все работает хорошо, но я не совсем понял, как сделать разницу между явно прикрепленными файлами к почте и такими вещами, как изображения в письмах с HTML-контентом. Эта библиотека обрабатывает их все как "вложения". Для моих нужд я бы не рассматривал изображение в HTML-письме как вложение.
Из библиотеки документов:

MessagePart считается вложением, если
- он не содержит текст и не является сообщением MultiPart или
- у него есть заголовок Content-Disposition, который говорит, что это вложение

Что я должен делать или искать, по крайней мере, теоретически (потому что я не очень знаком с почтовыми протоколами)?

3 ответа

Решение

Вы можете проверить, есть ли ссылка на файл изображения в основном тексте письма. Вам нужно будет проанализировать HTML и искать такие теги, как img или background-image свойство в селекторе CSS. Если изображение не используется самим сообщением, считайте его "подлинным" вложением.

Я сделал это таким образом, и это похоже на работу:

foreach (OpenPop.Mime.MessagePart fileItem in elencoAtt)
{
    System.Net.Mime.ContentDisposition cDisp = fileItem.ContentDisposition;

    //Check for the attachment...
    if (!cDisp.Inline)
    {
        // Attachment not in-line
    }
    else
    {
        // Attachment in-line
    }
}

Я разработчик на OpenPop.NET.

Это лишь некоторая справочная информация о письмах, содержащих вложения. Ответ Тони Пони - путь.

У меня также была проблема отличия вложений от не вложений, когда я реализовывал эту часть OpenPop.NET. MIME имеет заголовок,Content-Disposition который может сказать, является ли определенная часть вложением или нет.

Например, вот вложение

Content-Disposition: attachment

и здесь может быть изображение в HTML-части электронной почты

Content-Disposition: inline

Как это ни странно, проблема в том, что многие почтовые клиенты не добавляют эти заголовки, что затрудняет работу таких читателей, как OpenPop.NET. Мы решили не просматривать все HTML-части электронного письма, чтобы увидеть, к каким изображениям обращаются, и поэтому теперь это зависит от пользователя библиотеки.

Если вы разрабатываете хорошее решение проблемы, его можно добавить в качестве примера для проекта.

Другие вопросы по тегам