使用 EWS 获取邮箱权限

m_c*_*ard 5 c# exchangewebservices

我正在创建一个需要获取每个邮箱权限的应用程序,但我似乎无法让它工作。我在 VS 对象浏览器中注意到Permissions属性位于Folder类上。

所以我猜我需要获取MailBox对象,然后获取根/默认文件夹,以便我可以获得权限。

这是我到目前为止所做的,但是当它调用时,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;
Run Code Online (Sandbox Code Playgroud)

我试过传入不同的 ExchangeVersion 枚举值,但它们也不起作用。但是当我尝试获取公共文件夹根文件夹时,传递 ExchangeVersion.Exchange2007_SP1 确实有效。

Folder rootfolder = Folder.Bind(service, WellKnownFolderName.PublicFoldersRoot);
Run Code Online (Sandbox Code Playgroud)

所以问题是如何使用 EWS 获得邮箱权限?

m_c*_*ard 5

我刚刚在邮箱帖子中找到了找出哪些用户具有完全访问权限的帖子,上面写着

您不能使用 EWS(或任何 Exchange 邮箱 API),您只能访问文件夹级别的 DACL,您需要读取的是邮箱 DACL,它只能通过 Exchange 命令行管理程序 (Get-MailboxPermissions) 或通过从 Active Directory 读取 msexchmailboxsecuritydescriptor。

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