【发布时间】:2016-07-14 08:10:39
【问题描述】:
我希望能够检查登录用户是否有权从特定电子邮件地址发送邮件。如果他不能,我会从 UI 中删除选择,他只能从他的发送。
到目前为止,我似乎只能得到“用于提交此请求的用户帐户无权代表指定的发送帐户发送邮件”。一旦我做了.SendAndSaveCopy() 的消息,如果我做了.Save() ,它只返回没有错误。
ImpersonateUserId() 未在此 Exchange 服务器上启用。
【问题讨论】:
我希望能够检查登录用户是否有权从特定电子邮件地址发送邮件。如果他不能,我会从 UI 中删除选择,他只能从他的发送。
到目前为止,我似乎只能得到“用于提交此请求的用户帐户无权代表指定的发送帐户发送邮件”。一旦我做了.SendAndSaveCopy() 的消息,如果我做了.Save() ,它只返回没有错误。
ImpersonateUserId() 未在此 Exchange 服务器上启用。
【问题讨论】:
SendAS 权限是一个扩展的 Active Directory ACE https://technet.microsoft.com/en-au/library/ff405676.aspx 任何邮箱 API 都不能用于查看或编辑该权限。因此,您可以检索它的唯一方法是通过 LDAP 查询目录并读取目标对象上的 DACL。
【讨论】:
似乎没有直接的方法来验证权限。
所以我使用下面的代码“尝试”从给定帐户中检索文件夹列表。如果它返回答案,那是因为它有权限。
private bool HasOwnerAccess(string emailaddress)
{
try
{
Mailbox mailbox = new Mailbox(emailaddress);
FindFoldersResults findfolder = exchangeService.FindFolders(new FolderId(WellKnownFolderName.Inbox, mailbox), new FolderView(1));
return true;
}
catch (Exception)
{
return false;
}
}
【讨论】: