如何使用Exchange Web服务查找其他用户的日历项

时间:2015-09-04 20:44:09

标签: c# exchange-server exchangewebservices calendarview

我想编写一些代码来查询Exchange Server以查找一组用户的日历条目。这可能吗?

我是使用EWS的新手。我发现很难找到任何好的概述文档来指导我如何使用它。

无论如何,我正在尝试的代码是这样的:

                    DateTime startDate = new DateTime(2015, 8, 1);
                    DateTime endDate = new DateTime(2015, 11, 1);
                    CalendarView calView = new CalendarView(startDate, endDate);

                    Mailbox mb = new Mailbox(@"somebodyelse@corp.testcompany.com");

                    FolderId fid = new FolderId(WellKnownFolderName.Calendar, mb);

                    FindItemsResults<Item> instanceResults = service.FindItems(fid, calView);

最后一行抛出ServiceResponseException:&#34;在商店中找不到指定的文件夹。&#34;

上述方法是否接近正确?也许有一种完全不同的更好的方法来做到这一点?

请注意,上面的服务对象是一个ExchangeService对象,我使用administrator@corp.testcompany.com的凭据进行设置。我希望管理员用户有权查看其他用户&#39;日历,但也许这也必须在Exchange中的某个地方设置?

1 个答案:

答案 0 :(得分:1)

你的代码很好。您获得的错误可能与目标邮箱的访问权限有关。默认情况下,管理员无法访问其他用户邮箱。

要使用户能够访问其他用户的邮箱,您可以使用powershell或Exchange管理控制台:

通过powershell:

打开Exchange管理外壳并运行以下命令:

Add-MailboxPermission -Identity“User1”-User“User2”-AccessRights FullAccess -InheritanceType All

这将使User2能够访问User1的邮箱。

请查看this了解详情。

通过Exchange管理控制台:

打开Exchange管理控制台,转到收件人配置 - &gt;邮箱,然后选择目标用户。右键单击该用户,然后单击“管理完全访问权限”。

从那里,添加要访问邮箱的用户,然后单击“管理”。

请注意,这是基于Exchange 2010.在不同的交换版本中,这可能会有所不同。我认为powershell命令是相同的,但基于GUI的配置可能会有所不同。