我想列出每个交换共享日历的权限。 我有两个交换在线帐户: vikramsingh@gmail.com vikramsinghmrt@outlook.com
现在,我已经从vikramsingh@gmail.com与vikramsinghmrt@outlook.com分享了一个日历。
现在,当我使用Exchange EWS API获取日历列表时,我获得了所有日历(包括共享日历),但无法知道哪一个共享日历。
我使用下面的代码:
PropertySet propSet = new PropertySet(BasePropertySet.FirstClassProperties,FolderSchema.Permissions); Folder folder = Folder.Bind(service,folderid,propSet);
if (folder.Permissions.Count != 0)
{
for (int t = 0; t < folder.Permissions.Count; t++)
{
if (folder.Permissions[t].UserId.DisplayName != null || folder.Permissions[t].UserId.PrimarySmtpAddress != null)
{
}
}
}
但是每次都会将userId.DisplayName和UserId.PrimarySmtpAddress返回null。
我怎么知道哪个日历是共享的?
答案 0 :(得分:0)
您可以使用属性RequiredAttendees
和OptionalAttendees
,并检查共享日历的电子邮件地址。如果其中一个属性包含共享日历的邮件地址,则它来自共享日历。
答案 1 :(得分:0)
如果使用“关联遍历共享”文件夹检查每个文件夹的“文件夹关联项目”集合,则该集合中应该有一个类型为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);
答案 2 :(得分:0)
我得到了答案。我们有日历电话如下。 service.FindFolders(new FolderId(WellKnownFolderName.Root,&#34; email&#34;)
在此次通话中,我们会传递我的电子邮件ID。 (我的凭证电子邮件)。 如果我需要访问其他用户日历(共享日历)。我需要在这里传递其他用户电子邮件地址。 like service.FindFolders(new FolderId(WellKnownFolderName.Root,&#34; Other user email&#34;)。
服务对象由我的凭证创建,只是传递其他用户的电子邮件。现在你可以获得所有日历。