2016-06-21 2 views
0

로그인 한 사용자가 특정 전자 메일 주소에서 보낼 권한이 있는지 확인하고 싶습니다. 그가 할 수 없다면 나는 UI에서 그 선택을 제거 할 것이고, 그는 그의 것에서 만 보낼 수있을 것이다.보내기 전에 보낸 사람 주소 사용 권한을 확인하는 방법

지금까지는 "이 요청을 제출하는 데 사용 된 사용자 계정에 지정된 보내는 계정 대신 메일을 보낼 수있는 권한이 없습니다."라는 메시지 만 표시 될 수 있습니다. 메시지가 .SendAndSaveCopy() 일 경우, 내가 .Save() 일 경우 오류를 반환하지 않습니다.

ImpersonateUserId()은이 Exchange 서버에서 사용할 수 없습니다.

답변

0

SendAS 권한이 확장 된 Active Directory ACE https://technet.microsoft.com/en-au/library/ff405676.aspx 해당 사서함 사용 권한을 보거나 편집 할 수있는 사서함 API가 없습니다. 따라서 LDAP를 통해 디렉터리를 쿼리하고 대상 개체의 DACL을 읽는 것이 유일한 방법입니다.

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; 
     } 
    } 
관련 문제