MessageSummaryItems.PreviewText Пояснение

Мы используем недавно добавленную функцию MessageSummaryItems.PreviewText. Спасибо!!

По вопросу: иногда PreviewText содержит ссылки HTML? Прочитав источник, я вижу это в ImapFolderFetch.cs

var body = message.TextBody?? message.HtmlBody;

Итак, это говорит: использовать версию открытого текста, если она существует, то использовать версию HTML?

Поэтому, если я вижу ссылки в предварительном просмотре, я могу предположить, что нет доступной версии открытого текста?

Наша проблема с этим:

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

Согласно вашему TODO: лучше использовать расширение CONVERT, но, насколько я могу судить, оно не поддерживается Gmail?

Отступление будет:

Если бы мы могли установить продолжительность предварительного просмотра как для HTML, так и для открытого текста по отдельности, то мы могли бы сказать: если у вас есть только HTML-версия, дайте мне 1K ее, и я уберу ссылки на клиенте.

Мысли?

1 ответ

Решение

Очень немногие IMAP-серверы поддерживают расширение CONVERT, что является основной причиной, по которой я его не реализовал.

Функция PreviewText - это попытка добавить удобную функцию для извлечения первых 256 байтов каждого тела сообщения в пакетных запросах, чтобы минимизировать задержку, но независимо от того, что я делаю, она не гарантированно будет полезна (поскольку может быть тонна разметки перед тем, как любой реальный текст будет включен в HTML).

Если бы я разбил текстовые и html-сообщения на 2 разных пакета, чтобы можно было запрашивать разные размеры для каждого, тогда это было бы менее эффективно и могло бы потребовать значительно больше времени для извлечения, поэтому я не уверен, действительно ли это того стоит. Чем меньше я могу пакетировать за раз, тем менее полезной становится эта функция по сравнению с реализацией собственного цикла над списком сообщений и загрузкой указанного вами размера чанка. одно сообщение за раз.

Я бы предложил использовать функцию PreviewText, а для редких сообщений, для которых недостаточно 256 байт, выполнить folder.GetStream() на них.

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