Как войти в систему из приложения-службы, не зная Outlookversion (2010,2013,2016 и т. Д.) Заранее - PullRequest
0 голосов
/ 21 мая 2019

Я пишу приложение-службу, которое должно отслеживать один или несколько ExchangeMailboxes для входящих писем, чтобы выполнить какое-то действие с ними.Служба будет работать в разных средах, что означает, что мне нужно поддерживать Outlook 2010 до 2019.

Как я могу надежно войти в сеанс из приложения-службы независимо от версии Outlook?

Iиметь следующий код, который работает для Outlook 2010, но не 2016. ExchangeServer такой же и использует версию 2010.

for MailboxName in MailboxesToMonitor do
begin
  Session := RedemptionLoader.new_RDOSession;
  Session.LogonExchangeMailbox(MailboxName, 'ExchangeServerName'); // works for 2010, but not 2016
  DefaultStore := Session .Stores.DefaultStore;
  if (LDefaultStore.StoreKind in [skPrimaryExchangeMailbox, skDelegateExchangeMailbox]) then
  begin
    MailboxStore := TRDOExchangeMailBoxStore.Create(Self);
    try
      MailboxStore.ConnectTo(DefaultStore as IRDOExchangeMailboxStore);
      MailboxStore.OnNewMail := RDOStoreOnNewMail;
    except
      LMailboxStore.Free;
      raise;
    end;
    Sessions.Add(Session);
  end;
end;
  • Session.LogonExchangeMailbox выдает ошибку MAPI_E_UNKNOWN_FLAGS с Outlook2016 год установлен.
  • Session.Logon не работает в приложении ServiceApplication.
  • Session.LogonHostedExchangeMailbox бросков:
    1. EOleSysError: Ожидается HTTP_STATUS_REDIRECT, получено 403
    2. EIdDnsResolverError:Ошибка имени запроса отчетов DNS-сервера
    3. Ошибка EHTTP: ошибка HTTP 401 из https://autodiscover.domain.com/autodiscover/autodiscover.xml
    4. Ошибка EOleSysError: GetAutodiscoverUrlFromDns: ошибка поиска DNS с использованием xx.xx.xx.xx: Ошибка имени запроса отчетов DNS-сервера
    5. EOleSysError: GetAutodiscoverForEmailAddress: в AD нет серверов автообнаружения для этого адреса

1 Ответ

2 голосов
/ 21 мая 2019

Имейте в виду, что LogonExchangeMailbox подключается к серверу в старом режиме RPC, который более не поддерживаются в последних версиях Exchange Server.

Вам необходимо использовать LogonHostedExchangeMailbox для Exchange 2013/2016/2019 - он подключается в режиме PRC-over-HTTP или MAPI-over-HTTP. Для работы LogonHostedExchangeMailbox вам потребуется как минимум Outlook 2010 SP2, 2013 SP1 или 2016/2019.

...