Exchange server EWS-访问共享日历

Exchange server EWS-访问共享日历,exchange-server,exchangewebservices,Exchange Server,Exchangewebservices,我想列出每个exchange共享日历的权限。 我有两个exchange online帐户: vikramsingh@gmail.com vikramsinghmrt@outlook.com 现在,我已与您共享了一个日历vikramsinghmrt@outlook.com从…起vikramsingh@gmail.com. 现在,当我使用ExchangeEWSAPI获取日历列表时,我得到了所有日历(包括共享日历),但无法知道是哪一个共享日历 我使用了以下代码: PropertySet propSet

我想列出每个exchange共享日历的权限。 我有两个exchange online帐户: vikramsingh@gmail.com vikramsinghmrt@outlook.com

现在,我已与您共享了一个日历vikramsinghmrt@outlook.com从…起vikramsingh@gmail.com.

现在,当我使用ExchangeEWSAPI获取日历列表时,我得到了所有日历(包括共享日历),但无法知道是哪一个共享日历

我使用了以下代码:

PropertySet propSet=newPropertySet(BasePropertySet.FirstClassProperties,FolderSchema.Permissions); Folder Folder=Folder.Bind(服务、folderid、propSet)

if(folder.Permissions.Count!=0)
{
对于(int t=0;t
但每次都会将userId.DisplayName和userId.primarysmtaddress返回null


我如何知道哪个日历是共享的?

您可以使用属性
RequiredAttendes
OptionalAttendes
,并检查共享日历的电子邮件地址。如果其中一个属性包含共享日历的邮件地址,则该地址来自共享日历。

如果使用共享文件夹的关联遍历检查每个文件夹的文件夹关联项集合,则该集合中应包含IPM.Sharing.SyncState类型的项

        ItemView iv = new ItemView(1000);
        iv.Traversal = ItemTraversal.Associated;
        SearchFilter sf = new SearchFilter.IsEqualTo(ItemSchema.ItemClass, "IPM.Sharing.SyncState");
        FindItemsResults<Item> fiItems = Folder.FindItems(sf, iv);
ItemView iv=新的ItemView(1000);
iv.遍历=项遍历关联;
SearchFilter sf=newsearchfilter.IsEqualTo(ItemSchema.ItemClass,“IPM.Sharing.SyncState”);
FindItemsResults-fiItems=Folder.FindItems(sf,iv);

我得到了答案。我们有如下日历电话。service.FindFolders(新文件夹ID(WellKnownFolderName.Root,“电子邮件”)

在此通话中,我们传递我的电子邮件id(我的凭证电子邮件)。 如果我需要访问其他用户日历(共享日历)。我需要在此处传递其他用户电子邮件地址。例如service.FindFolders(新文件夹ID(WellKnownFolderName.Root,“其他用户电子邮件”)

服务对象是由我的凭据创建的,只需传递其他用户的电子邮件即可。现在您可以获取所有日历

        ItemView iv = new ItemView(1000);
        iv.Traversal = ItemTraversal.Associated;
        SearchFilter sf = new SearchFilter.IsEqualTo(ItemSchema.ItemClass, "IPM.Sharing.SyncState");
        FindItemsResults<Item> fiItems = Folder.FindItems(sf, iv);