Я пишу приложение-службу, которое должно отслеживать один или несколько 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
бросков: - EOleSysError: Ожидается HTTP_STATUS_REDIRECT, получено 403
- EIdDnsResolverError:Ошибка имени запроса отчетов DNS-сервера
- Ошибка EHTTP: ошибка HTTP 401 из
https://autodiscover.domain.com/autodiscover/autodiscover.xml
- Ошибка EOleSysError: GetAutodiscoverUrlFromDns: ошибка поиска DNS с использованием xx.xx.xx.xx: Ошибка имени запроса отчетов DNS-сервера
- EOleSysError: GetAutodiscoverForEmailAddress: в AD нет серверов автообнаружения для этого адреса