Часто задаваемые вопросы

Contents
[ ]

Question

Привет! для следующего кода:


 Aspose.Email.Mime.ContentType ct = new Aspose.Email.Mime.ContentType();

ct.MediaType = "application/msword";

ct.CharSet = "ISO-2022-JP";

Attachment att = new Attachment("Test.doc", ct);

Console.WriteLine(att.ContentType.Name);

att.ContentType.Name возвращает имя вложенного документа. Является ли это ожидаемым поведением?

Ответ: Да, это ожидаемое поведение. Если ContentType.Name не установлен явно, в качестве имени будет использовано значение имени файла.

Вопрос:

Почему ExchangeWebServiceClient.FetchMessage делает встроенные изображения вложениями?

Ответ: Microsoft Exchange Server имеет такую функциональность, как ‘Преобразование содержимого, что представляет собой процесс корректного форматирования сообщения для каждого получателя. Решение о выполнении преобразования содержания сообщения зависит от назначения и формата обрабатываемого сообщения.

Другими словами, для неизвестных клиентов сервер может выполнять форматирование сообщения в соответствии с настройками сервера (для выбора наиболее подходящего формата сообщения). Как вы понимаете, наиболее универсальный формат для любого клиента — ’text/plain’, и эти настройки конфигурируются на сервере.

Обратите внимание: Outlook — известный клиент электронной почты для Microsoft Exchange Server (в случае, если версия MS Outlook старее сервера). Это означает, что Exchange Server формирует формат сообщения в соответствии со способностями Outlook. В нашем случае, когда ExchangeWebServiceClient пытается получить сообщение, возможности наших компонентов неизвестны MS Exchange. Сервер передаёт сообщение компонентам в самом простом формате (text/plain). Другими словами, в ответе сервера отсутствуют HTML‑части. В такой ситуации изображения включаются в сообщение как вложения.

Существует способ избежать описанной проблемы. Если сообщение на сервере имеет заголовок Content-Type: multipart/alternative и одна из его частей — text/plain, в этом случае сообщение передаётся клиенту как есть. Изображения в таком случае отображаются в теле сообщения, потому что сообщение также содержит HTML‑часть. В текущем сценарии сообщение добавляется в MS Exchange с помощью MS Outlook, и в результате заголовок Content-Type сообщения не является ‘multipart/alternative’. Поэтому возникает проблема при попытке получить сообщение. Например, ниже приведены примеры аналогичных проблем: один (http://support.risualblogs.com/blog/2011/02/24/html-mails-sent-via-owa-and-outlook-2011-are-received-as-plain-text-mails-externally/), два (http://forums.mozillazine.org/viewtopic.php?f=39&t=628678), три (http://stackoverflow.com/questions/4681798/how-do-i-send-html-multipart-alternative-from-exchange-web-services-2010-sp1). В заключение, ситуация, описанная в issue (изображения, включённые в сообщение как вложения), не является ошибкой компонентов Aspose. Это особенность сервера Exchange.

Question: Как извлечь данные из вложения "oleData.mso", полученного при чтении MapiMessage, содержащего встраиваемый OLE‑объект?

Answer: Файлы вроде "oleData.mso" относятся к формату Microsoft Compound Document (MCDF), и, к сожалению, поддержка таких файлов выходит за рамки возможностей Aspose.Email. Однако существуют открытые .NET‑библиотеки, например OpenMCDF, которые можно использовать для чтения содержимого таких файлов и сохранения их на диск.

Question: Может ли происходить запись в один и тот же PST‑файл из параллельных потоков с использованием одинаковых объектов?

Answer: Нет, потокобезопасность в таком случае не гарантируется. Запись сообщений должна выполняться в одном потоке. Однако продукт должен корректно работать с различными объектами из разных потоков.