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()
на них.