Delphi 如何在不预先知道Outlookversion(2010201302016等)的情况下从Serviceapplication登录

Delphi 如何在不预先知道Outlookversion(2010201302016等)的情况下从Serviceapplication登录,delphi,outlook-redemption,Delphi,Outlook Redemption,我正在编写一个服务应用程序,该应用程序应该监视一个或多个ExchangeMailbox中的传入邮件,以便对这些邮件执行一些操作。 该服务将在不同的环境中运行,这意味着我需要支持Outlook 2010至2019 如何从服务应用程序可靠地登录到会话,而不管其版本是什么 我有以下适用于Outlook 2010但不适用于2016的代码。 ExchangeServer与此相同,使用的是2010版 mailboxstomonitor do中的MailboxName的 开始 会话:=RedemptionLo

我正在编写一个服务应用程序,该应用程序应该监视一个或多个ExchangeMailbox中的传入邮件,以便对这些邮件执行一些操作。
该服务将在不同的环境中运行,这意味着我需要支持Outlook 2010至2019

如何从服务应用程序可靠地登录到会话,而不管其版本是什么

我有以下适用于Outlook 2010但不适用于2016的代码。 ExchangeServer与此相同,使用的是2010版

mailboxstomonitor do中的MailboxName的

开始
会话:=RedemptionLoader.new\r会话;
Session.LogonExchangeMailbox(MailboxName,'ExchangeServerName');//适用于2010年,但不适用于2016年
DefaultStore:=Session.Stores.DefaultStore;
如果[skPrimaryExchangeMailbox,skDelegateExchangeMailbox]中有(LDefaultStore.StoreKind),则
开始
MailboxStore:=TRDOExchangeMailBoxStore.Create(Self);
尝试
ConnectTo(默认存储为IRDOExchangeMailboxStore);
MailboxStore.OnNewMail:=RDOStoreOnNewMail;
除了
LMailboxStore。免费;
提高;
结束;
添加(会话);
结束;
结束;
  • 会话。LogonExchangeMailbox
    在安装Outlook 2016时引发MAPI_E_未知_标志错误
  • Session.Logon
    在ServiceApplication中不起作用
  • Session.LogonHostedExchangeMailbox
    抛出:
  • EOleSysError:预期HTTP_状态_重定向,收到403
  • EIdDnsResolverError:DNS服务器报告查询名称错误
  • ehttperor:HTTP错误401来自
    https://autodiscover.domain.com/autodiscover/autodiscover.xml
  • EOleSysError:GetAutodiscoverUrlFromDns错误:使用xx.xx.xx.xx的DNS查找错误:DNS服务器报告查询名称错误
  • EOleSysError:GetAutoDiscoveryForMailAddress:此地址的AD中没有自动发现服务器

请记住,
LogonExchangeMailbox
以旧RPC模式连接到服务器,Exchange server的最新版本不再支持旧RPC模式


您需要为Exchange 2013/2016/2019使用
LogonHostedExchangeMailbox
-它通过HTTP或MAPI通过HTTP模式在PRC中连接。要使LogonHostedExchangeMailbox正常工作,您至少需要有Outlook 2010 SP2、2013 SP1或2016/2019版本。

如果您想要独立于Outlook的工作设置,请使用EWS API,以下是错误401,表示凭据错误。你认为第一个和第二个参数是什么?很好,我尝试了
Session.LogonHostedExchangeMailbox('me@company.com', 'me@company.com', '');
这不起作用,但使用'Domain\Username'作为
Username
参数确实起作用,所以我需要使用NTLM身份验证。是否有一种方法可以事先检查需要哪种身份验证方法,或者如果我不知道使用了什么方法,我只需要尝试一下,看看什么方法有效?在当前使用Exchange 2010的环境中,这是否意味着
LogonExchangeMailbox
是正确的方法?这在使用Outlook 2010的计算机上有效,但在使用Outlook 2016LogonExchangeMailbox的计算机上无效。邮箱仍应工作。。。LogonHostedExchangeMailbox是否适用于您的Exchange 2010服务器?
LogonHostedExchangeMailbox
不适用于我的Exchange 2010服务器,请查看编辑后的问题以了解我收到的错误。