Основная команда IMAP.Как получить только текст или html часть тела? - PullRequest
0 голосов
/ 03 октября 2011

У меня есть запрос относительно команды FETCH ... BODY [...].

Как лучше всего получить текстовую или html часть тела? Я думал, что команда BODY [TEXT] сделает это, но она также возвращает вложения и т. Д., Что серьезно влияет на производительность.

В настоящее время это то, что я делаю (код C #):

        if (contentType != null)
        {
            switch (contentType.ToLower())
            {
                case "multipart/alternative":
                case "text/plain":
                case "text/html":
                    body = " BODY[1]";
                    break;
                case "multipart/related":
                case "multipart/signed":
                    body = " BODY[1.1]";
                    break;
                case "multipart/report":
                    body = " BODY[1]";
                    break;
                case "multipart/mixed":
                    if (mail.MailBody.TextBodyPartCount == 1)
                        body = " BODY[1]";
                    else if (mail.MailBody.TextBodyPartCount == 2)
                    {
                        if (bodyType == BodyType.Plain)
                            body = " BODY[1.1]";
                        else
                            body = " BODY[1.2]";
                    }
                    else
                        body = " BODY[1]";
                    break;
                default:
                    body = " BODY[1]";
                    break;
            }
        }
        else
        {
            body = " BODY[1]";
        }

Это работает большую часть времени, но в некоторых случаях возвращает NIL. Извините, если я оставил какие-либо детали, но, пожалуйста, спросите!

Спасибо.

1 Ответ

1 голос
/ 07 октября 2011

Сообщения электронной почты хранятся в формате MIME - это позволяет создавать древовидную структуру с неограниченной глубиной.Вы не можете предположить, как выглядит эта древовидная структура, только проверяя тип содержимого.

Вы должны использовать BODYSTRUCTURE, чтобы воссоздать древовидную структуру без загрузки сообщения, и после этого вы можете решить, какие части вам нужно извлечь.

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