Как мы можем получить доступ к почтовым ящикам Exchange через EWS, если у пользователя нет собственного почтового ящика?

Мы хотим получить доступ к почтовым ящикам через EWS (веб-службы Exchange) с выделенным пользователем, у которого нет собственного почтового ящика.

Цель состоит в том, чтобы охватить все версии Exchange Server 2007-2019.

Причина, по которой мы хотим иметь специального пользователя без почтового ящика: мы хотим проанализировать все почтовые ящики на сервере Exchange с помощью программного обеспечения. Но поэтому на самом деле нам не нужен пользователь и даже почтовый ящик. Программному обеспечению интересны только данные внутри почтовых ящиков.

Для доступа к EWS мы используем API Independencentsoft :

      var lCredential = new NetworkCredential("ADUserWithNoMailbox", "Password");
m_Service = new Service("https://hostname/EWS/Exchange.asmx", lCredential);

try
{
    FindFolderResponse lResponse = m_Service.FindFolder(StandardFolder.MailboxRoot);
    
    // [...]
}
catch (Exception e)
{
    // cast in into multiple expected types
    var lServiceRequestException = e as Independentsoft.Exchange.ServiceRequestException;

    if (lServiceRequestException.ResponseCode == "ErrorNonExistentMailbox")
    {
        // lServiceRequestException.Message shows: "No mailbox with such guid."
        // [...]
    }
    
    // [...]
    
    throw;
}

Наш пользователь ADUserWithNoMailboxкоторый в Active Directory не имеет почтового ящика. Поэтому возникает исключение с сообщением:

      "No mailbox with such guid."

Вопрос: Как мы можем получить доступ к почтовым ящикам Exchange через EWS, если у пользователя нет собственного почтового ящика?

1 ответ

Он должен работать нормально, если для серверов установлены правильные уровни, например, может быть проблема вроде https://support.microsoft.com/en-us/topic/-the-smtp-address-has-no-mailbox-associated-with-it-error-when-you-access-a-user-s-mailbox-by-using-ews-application-c8e31e36-b6e2-229e-cc78-305ab9fea94a. Я всегда считал, что это проблематично, если вы развертываете приложения в различных клиентских средах, и для большинства развертываний OnPrem предоставление учетной записи службы использования почтового ящика не является проблемой: чтобы он не появлялся в списках адресов, большинство клиентов могут просто скрыть это. (Office365 - другое дело из-за стоимости использования лицензии, но вы можете использовать токены приложений, которые не требуют пользователя или почтового ящика)

Вероятно, для вашего требования использование EWS Impersonation https://docs.microsoft.com/en-us/exchange/client-developer/exchange-web-services/impersonation-and-ews-in-exchange - лучший вариант, поскольку это даст вы получаете доступ ко всем почтовым ящикам.

Другие вопросы по тегам