我正在编写一个应用程序,创建人们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]")
将引发一条带有消息未知属性的COMException:开始。两者都适用于完全共享的日历。
现在,对于概述,我需要的只是开始和结束时间,所以我真的不想让每个人都改变他们的共享设置,特别是在不需要的时候。
我的问题是:
答案 0 :(得分:1)
您可以使用GetSharedDefaultFolder
方法,而不是使用Recipient.FreeBusy
并访问该文件夹中的项目。