2016-06-21 6 views
0

Я хотел был бы быть в состоянии проверить, имеет ли зарегистрированный пользователь разрешение на отправку с определенного адреса электронной почты. Если он не сможет, я удалю выбор из пользовательского интерфейса, и он мог только отправить его.Как проверить правильность адреса отправителя перед отправкой

До сих пор кажется, что я могу получить только «Учетная запись пользователя, которая использовалась для отправки этого запроса, не имеет права отправлять почту от имени указанной учетной записи». сообщение раз я сделал .SendAndSaveCopy(), если сделаю .Save() только возвращенный нет погрешность.

ImpersonateUserId() не включен на этом сервере обмена.

ответ

0

Права SendAS - это расширенный Active Directory ACE https://technet.microsoft.com/en-au/library/ff405676.aspx. Ни один из API-интерфейса почтового ящика не может использовать просмотр или редактирование этого разрешения. Таким образом, единственный способ получить это - запросить каталог через LDAP и прочитать DACL на объекте Target.

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; 
     } 
    } 
Смежные вопросы