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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了获取其他用户的Outlook可用性信息相关的知识,希望对你有一定的参考价值。

我正在编写一个应用程序,创建人们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网络服务?
答案

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

以上是关于获取其他用户的Outlook可用性信息的主要内容,如果未能解决你的问题,请参考以下文章

基于Outlook Web的添加 - 如何在Outlook中在线获取时区设置?

如何使用Outlook 客户端配置其他邮箱客户端收发邮件

RPC 服务器不可用

从 2 个不同片段的 sqlite 中的 2 个表中获取信息

企业邮箱客户端如何设置outlook

电脑屏幕经常弹出提示“与microsoft exchange outlookd的连接吧可用。outlook必须联机或连接才可完成操作