我正在创建一个需要为每个邮箱获取权限的应用程序,但我似乎无法让它工作。我在 VS 对象浏览器中注意到 Permissions属性(property)在Folder类(class)。
所以我猜我需要得到 MailBox对象,然后获取根/默认文件夹,这样我就可以获得权限。
这是我到目前为止所做的,但是当它调用 Folder rootfolder = Folder.Bind(service, sharedMailboxRootFolderId);
时,我得到以下异常:
"The Client Access Server version does not match the accessed resource's Mailbox Server version."
ExchangeService service = new ExchangeService(ExchangeVersion.Exchange2007_SP1);
string exchangeServerWebServicesUrl = "https://example.com/EWS/Exchange.asmx";
service.Url = new Uri(exchangeServerWebServicesUrl);
string username = "*********************";
string password = "*********************";
service.UseDefaultCredentials = false;
service.Credentials = new WebCredentials(username, password);
Mailbox sharedMailbox = new Mailbox("shared@example.com");
FolderId sharedMailboxRootFolderId = new FolderId(WellKnownFolderName.Root, sharedMailbox);
Folder rootfolder = Folder.Bind(service, sharedMailboxRootFolderId);
var permissions = rootfolder.Permissions;
我试过传递不同的 ExchangeVersion 枚举值,但它们也不起作用。但是当我尝试获取公共(public)文件夹根文件夹时,传递 ExchangeVersion.Exchange2007_SP1 确实有效。
Folder rootfolder = Folder.Bind(service, WellKnownFolderName.PublicFoldersRoot);
所以问题是如何使用 EWS 获得邮箱权限?
最佳答案
我刚刚找到了 Find out which users have Full Access on a mailbox帖子说
You can't using EWS (or any of the Exchange Mailbox API's) you can only access the Folder level DACL's what you need to read is the Mailbox DACL which can only be either accessed via the Exchange Management Shell (Get-MailboxPermissions) or via reading the msexchmailboxsecuritydescriptor from Active Directory.
因此看起来无法使用 EWS 获取邮箱权限。 耻辱。
关于c# - 使用 EWS 获取邮箱权限,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30509909/