获取其他用户的Outlook可用性信息

问题描述 投票:0回答:1

我正在编写一个应用程序,创建人们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属性的COMException:Start。两者都适用于完全共享的日历。

现在,对于概述,我需要的只是开始和结束时间,所以我真的不想让每个人都改变他们的共享设置,特别是在不需要的时候。

我的问题是:

  • 最重要的是:有没有其他方法可以获得我忽略的可用性信息?
  • 并且相关:Interop现在仍然是最好的方式,还是有其他选择?也许Office365网络服务?
c# .net outlook automation
1个回答
1
投票

您可以使用GetSharedDefaultFolder方法,而不是使用Recipient.FreeBusy并访问该文件夹中的项目。

© www.soinside.com 2019 - 2024. All rights reserved.