JAVA EWS: setExtendedProperty с MapiPropertyType.Binary - PullRequest
0 голосов
/ 30 апреля 2019

Мне нужно усовершенствовать существующее приложение JAVA, чтобы хранить крайние сроки в нескольких календарях, которые все принадлежат (созданы) одному и тому же общему почтовому ящику.

Синхронизация крайних сроков в приложении и календарях Outlook не представляет проблемы.

Помимо синхронизации дат приложение JAVA должно иметь возможность отправлять приглашения в определенный календарь.Я использовал описание https://willcode4foodblog.wordpress.com/2012/04/13/understanding-sharing-invitation-requests-ews-managed-api-1-2-part-1/. Мне нужно было перенести этот материал с C # на JAVA.На sendAndSaveMessage я всегда получаю это исключение:

exchange.webservices.data.core.exception.service.remote.ServiceRequestException: The request failed. An internal server error occurred. The operation failed.
at microsoft.exchange.webservices.data.core.request.SimpleServiceRequestBase.internalExecute(SimpleServiceRequestBase.java:74)
at microsoft.exchange.webservices.data.core.request.MultiResponseServiceRequest.execute(MultiResponseServiceRequest.java:158)
at microsoft.exchange.webservices.data.core.ExchangeService.sendItem(ExchangeService.java:789)
at microsoft.exchange.webservices.data.core.service.item.EmailMessage.internalSend(EmailMessage.java:156)
at microsoft.exchange.webservices.data.core.service.item.EmailMessage.sendAndSaveCopy(EmailMessage.java:300)

Используя отладчик, я обнаружил, что все расширенные свойства MapiPropertyType.Binare имеют нулевое значение.Например,

byte[] binInitiatorEntryId = hexStringToByteArray(initiatorEntryID);
ExtendedPropertyDefinition pidLidSharingInitiatorEntryId = 
  new ExtendedPropertyDefinition(propertySetSharing, 0x8A09, MapiPropertyType.Binary);           
invitationRequest.setExtendedProperty(pidLidSharingInitiatorEntryId, binInitiatorEntryId);

Таким образом, в отладчике расширенное свойство существует, но значение равно «null».

Все остальные поля, отмеченные в примере, выглядят нормально в отладчике.Просто двоичные файлы все "нулевые".Я также сравнил вложение shared_metadata.xml с вложением, созданным в Outlook, и они идентичны.Хорошо, есть несколько полей, с которыми мне нужно поиграть (скажем, мне нужно использовать «специальную папку» для pidLidSharingFlavor, потому что я не нашел объяснений в спецификации о том, что такое специальная папка).Но поскольку очевидно, что «нулевое» значение для MapiPropertyType.Binary является неправильным, нет смысла проверять другие возможности.

Так что, в основном, есть два вопроса относительно этой проблемы, которые, я надеюсь, кто-то снемного больше опыта может объяснить:

Вопрос 1: Есть ли какой-либо особый способ в JAVA для хранения расширенных свойств MapiPropertyType.Binary?

Вопрос 2: Есть ли способ получить дополнительную информацию о «внутренней ошибке сервера» из EWS?Даже улучшение трассировки не дает больше информации, кроме XML-представления сообщения.

Заранее спасибо.

ChriS

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