6

我需要通过调用 BPOS 中的 Exchange Web 服务来检索日历信息。我正在使用 aCalendarViewPropertySet检索尽可能少的数据。但是,属性集似乎是有限的。我需要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);
4

3 回答 3

6

这应该有效(对我有用):

service.FindAppointments(WellKnownFolderName.Calendar, new CalendarView(start, end)).Where(s => DateTime.Now < s.Start);
service.LoadPropertiesForItems(appointments, PropertySet.FirstClassProperties);
于 2011-07-20T18:25:27.000 回答
1

据我所知,EWS 在填充完整的 EmailAddress 详细信息时,无论是在“组织者的约会”还是“EmailMessage.From”等其他内容中,都存在一些问题。当您查询多个项目时,不会完全填充 EmailAddress 属性。例如使用以下 API:

Folder.FindItems
ExchangeService.FindAppointments

我发现只有EmailAddress 字段中的显示名称被填充。

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

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 的示例。

于 2010-04-08T07:22:24.643 回答
0
service.FindAppointments(WellKnownFolderName.Calendar, new CalendarView(start, end)).Where(s => DateTime.Now < s.Start);
service.LoadPropertiesForItems(appointments, PropertySet.FirstClassProperties);

它对我有用。

于 2013-02-25T08:20:01.720 回答