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 获得邮箱权限?
我刚刚在邮箱帖子中找到了找出哪些用户具有完全访问权限的帖子,上面写着
您不能使用 EWS(或任何 Exchange 邮箱 API),您只能访问文件夹级别的 DACL,您需要读取的是邮箱 DACL,它只能通过 Exchange 命令行管理程序 (Get-MailboxPermissions) 或通过从 Active Directory 读取 msexchmailboxsecuritydescriptor。
所以看起来不可能使用 EWS 获得邮箱权限。耻辱。
| 归档时间: |
|
| 查看次数: |
2891 次 |
| 最近记录: |