как отличить "настоящее" вложение почты от картинки в html почте? - PullRequest
6 голосов
/ 04 марта 2012

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

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

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

Ответы [ 3 ]

5 голосов
/ 28 августа 2012

Я сделал это таким образом, и, кажется, работает:

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
    }
}
5 голосов
/ 04 марта 2012

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

3 голосов
/ 05 марта 2012

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

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

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

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

Content-Disposition: attachment

и здесь может быть изображение в html-части письма

Content-Disposition: inline

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...