6 exchangewebservices ews-managed-api
我需要通过在BPOS中调用Exchange Web服务来检索日历信息.我使用的是CalendarView同一个PropertySet检索尽可能少的数据成为可能.但是,财产集似乎有限.我所需要的EmailAddress,所以我想我可以用谁做的日历约会的一个AppointmentSchema.Organizer中PropertySet.
在获取整个约会时,我可以收到电子邮件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)
据我所知,在为组织者的约会和“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 代码发现了这一点:
EwsEditor 的可用性相当糟糕,代码需要一些搜索才能弄清楚,但至少它确实显示了运用许多 API 的示例。
| 归档时间: |
|
| 查看次数: |
9681 次 |
| 最近记录: |