【发布时间】:2018-03-01 01:43:53
【问题描述】:
我正在编写一个创建人们 Outlook 日历概览的应用程序,即它将显示未来 [n] 周内每周计划外的时间量。
基本工作正常,但有一件事我遇到了麻烦。一些用户以某种方式共享他们的 Outlook 日历,以便其他用户只能看到可用性信息(约会的时间和描述),但看不到任何详细信息。
我通过手动打开 Outlook 并打开共享日历来验证这一点;将鼠标悬停在约会上将显示一个弹出窗口,其中包含开始和结束时间、描述和位置,但双击它会出现错误:“您无权显示日历,您要让 [人] 共享它吗? ”。
我的代码中的相关行是:
var outlook = new Application();
var mapiNamespace = outlook.GetNamespace("MAPI");
var recipient = mapiNamespace.CreateRecipient("Scott");
recipient.Resolve();
var calendarFolder = mapiNamespace.GetSharedDefaultFolder(recipient, OlDefaultFolders.olFolderCalendar);
var calendarItems = calendarFolder.Items;
我现在尝试对 calendarItems 进行的所有操作都会引发异常。例如,获取 Count 将引发 TargetInvocationException(客户端进程失败,但我不太确定确切的英文翻译)。调用Sort("[Start]") 将引发带有消息Unknown property: Start 的COMException。两者都适用于完全共享的日历。
现在,对于概述,我只需要开始和结束时间,所以我真的不想要求每个人更改他们的共享设置,尤其是在不必要的时候。
我的问题是:
- 最重要的是:还有其他方法可以获取我忽略的可用性信息吗?
- 和相关:Interop 现在仍然是可行的方法,还是有替代方案?也许是 Office365 网络服务?
【问题讨论】:
-
我过去曾使用EWS 在使用 Office365 的组织中获取此信息。我会注意到,您进行身份验证的帐户仍然需要查看请求的日历信息的权限。
标签: c# .net outlook automation