Exchange Web服务和属性集

6 exchangewebservices ews-managed-api

我需要通过在BPOS中调用Exchange Web服务来检索日历信息.我使用的是CalendarView同一个PropertySet检索尽可能少的数据成为可能.但是,财产集似乎有限.我所需要的EmailAddress,所以我想我可以用谁做的日历约会的一个AppointmentSchema.OrganizerPropertySet.

在获取整个约会时,我可以收到电子邮件appt.Organizer.EmailAddress.但是下面的代码Organizer.EmailAddress总是为空.我启用了跟踪并检查了它,只Organizer.Name发送了属性,没有别的.有没有人有一个如何获得使用EmailAddress时的解决方案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);
Run Code Online (Sandbox Code Playgroud)

小智 6

这应该工作(对我来说):

service.FindAppointments(WellKnownFolderName.Calendar, new CalendarView(start, end)).Where(s => DateTime.Now < s.Start);
service.LoadPropertiesForItems(appointments, PropertySet.FirstClassProperties);
Run Code Online (Sandbox Code Playgroud)


don*_*van 1

据我所知,在为组织者的约会和“EmailMessage.From”等其他内容填充完整的电子邮件地址详细信息时,EWS 存在一些问题。当您查询多个项目时,您不会获得完全填充的 EmailAddress 属性。例如使用如下 API:

Folder.FindItems
ExchangeService.FindAppointments
Run Code Online (Sandbox Code Playgroud)

我发现只有电子邮件地址字段中的显示名称被填充。

为了完全填充 EmailAddress,我发现我需要加载/绑定到特定项目并指定相关的 EmailAddress 属性,例如您的情况下的 AppointmentSchema.Organizer。因此,尽管您指定要加载的完全相同的属性,但您是使用单个项目调用而不是批量查询进行加载。例如使用:

ServiceObject.Load
Run Code Online (Sandbox Code Playgroud)

它可用于 Appointment 和 EmailMessage,因为它们都派生自 ServiceObject。使用 Item.Bind 并定义适当的属性集也应该有效。

顺便说一句,我通过查看此处提到的 EwsEditor 代码发现了这一点:

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

EwsEditor 的可用性相当糟糕,代码需要一些搜索才能弄清楚,但至少它确实显示了运用许多 API 的示例。