使用EWS获取邮箱权限

本文关键字:权限 获取 EWS 使用 | 更新日期: 2023-09-27 17:50:58

我正在创建一个应用程序,需要获得每个邮箱的权限,我似乎无法让它工作。我注意到在VS对象浏览器的权限属性是在文件夹类。

所以我猜我需要得到邮箱对象,然后得到根/默认文件夹,这样我就可以得到权限。

这就是我到目前为止所做的,但是当它调用Folder rootfolder = Folder.Bind(service, sharedMailboxRootFolderId);时,我得到以下异常:

"客户端访问服务器版本与访问的版本不匹配资源的邮箱服务器版本。"

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枚举值,但它们也不起作用。但是通过ExchangeVersion。当我尝试获取公共文件夹根文件夹时,Exchange2007_SP1确实工作。

Folder rootfolder = Folder.Bind(service, WellKnownFolderName.PublicFoldersRoot);

那么问题是我如何使用EWS获得邮箱权限?

使用EWS获取邮箱权限

我刚刚找到了查找哪些用户对写着

的邮箱帖子具有完全访问权限

你不能使用EWS(或任何Exchange Mailbox的API),你可以只访问文件夹级别的DACL,您需要读取的是只能通过Exchange访问的邮箱DACL管理Shell (Get-MailboxPermissions)或通过读取msexchmailboxsecuritydescriptor from Active Directory.

所以看起来不可能使用EWS获得邮箱权限。耻辱。