如何在发送前验证发件人地址权限

时间:2016-06-21 18:52:29

标签: c# exchangewebservices

我希望能够检查登录用户是否有权从特定电子邮件地址发送。如果他不能,我会从用户界面删除选择,他只能从他的。

发送

到目前为止,我似乎只能获得“用于提交此请求的用户帐户无权代表指定的发送帐户发送邮件”。我做.SendAndSaveCopy()后发出消息,如果我.Save(),则只返回错误。

ImpersonateUserId()未在此Exchange服务器上启用。

2 个答案:

答案 0 :(得分:0)

SendAS权限是扩展Active Directory ACE https://technet.microsoft.com/en-au/library/ff405676.aspx,任何邮箱API都不能用于查看或编辑该权限。因此,检索此问题的唯一方法是通过LDAP查询目录并读取Target对象上的DACL。

答案 1 :(得分:0)

似乎没有直接的方法来验证权限。

所以我使用下面的代码“尝试”从给定帐户中检索文件夹列表。如果它返回答案,那是因为它有权限。

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;
        }
    }