Веб-сервисы Exchange и наборы свойств

Я должен получить информацию календаря путем вызова Exchange Web Service in BPOS. Я использую a CalendarView с a PropertySet получать как можно меньше данные. Однако наборы свойств, кажется, ограничены. Мне нужно EmailAddress из того, который назначил календарную встречу, таким образом, я думал, что мог использовать AppointmentSchema.Organizer в PropertySet.

При выборке целого назначения я могу передать электронную почту appt.Organizer.EmailAddress. Но с кодом ниже Organizer.EmailAddress является всегда пустым. Я включил трассировку и проверил его и только Organizer.Name свойство отправляется, ничто иное. Делает у любого есть решение о том, как добраться EmailAddress при использовании a PropertySet?

CalendarView view = new CalendarView(dtFrom, dtTo);
view.PropertySet = new PropertySet(ItemSchema.Subject);
view.PropertySet.Add(ItemSchema.Id);
view.PropertySet.Add(AppointmentSchema.Start);
view.PropertySet.Add(AppointmentSchema.End);
view.PropertySet.Add(AppointmentSchema.Organizer); // This should contain EmailAddress but it doesn't

Mailbox mailbox = new Mailbox("myemail@test.ab");
FolderId id = new FolderId(WellKnownFolderName.Calendar, mailbox);
CalendarFolder folder = CalendarFolder.Bind(service, id);
FindItemsResults<Appointment> findResults = folder.FindAppointments(view);
6
задан JasonMArcher 10 July 2014 в 21:31
поделиться

1 ответ

Насколько я смог понять, EWS немного глючит, когда дело доходит до заполнения всех деталей EmailAddress как в «Назначениях для организатора», так и для других вещей, таких как «EmailMessage.From». Когда вы выполняете запрос для нескольких элементов, вы не получаете полного заполнения свойств EmailAddress. Например. используя такие API, как:

Folder.FindItems
ExchangeService.FindAppointments

Я обнаружил, что только отображаемое имя в полях EmailAddress заполняется.

Чтобы полностью заполнить EmailAddress, мне нужно загрузить / привязать к конкретному элементу и указать соответствующее свойство EmailAddress, например AppointmentSchema.Organizer в вашем случае. Таким образом, хотя вы указываете для загрузки одно и то же свойство, вы загружаете с помощью одного вызова элемента, а не массового запроса. Например. using:

ServiceObject.Load

Что доступно как для Appointment, так и для EmailMessage, поскольку они оба являются производными от ServiceObject. Использование Item.Bind с определенным соответствующим набором свойств также должно работать.

Кстати, я понял это, глядя на код EwsEditor, который упоминается здесь:

http://blogs.msdn.com/webdav_101/archive/2009/11/10/ews-has-more- happy-now-ews-managed-api-and-ewseditor.aspx

Удобство использования EwsEditor довольно отстойное, и код требует некоторого изучения, но, по крайней мере, он показывает примеры использования многих API.

1
ответ дан 17 December 2019 в 00:14
поделиться
Другие вопросы по тегам:

Похожие вопросы: