gpt4 book ai didi

delphi - Indy IMAP4 通过 SSL

转载 作者:行者123 更新时间:2023-12-03 15:57:01 35 4
gpt4 key购买 nike

我使用 Indy 10 (10.5.8.0) 在 Delphi 2007 中编写了一个 Windows 服务,该服务通过 IMAP 连接到电子邮件服务器并读取 10 封电子邮件、处理它们并断开连接。这会在一天中重复进行。只要服务不使用 SSL/TLS 连接,这就可以正常工作。

使用 TLS 连接时,第一次似乎可以正常工作,但在后续尝试中会出现“启动 SSL 协商失败”错误。我在我的服务中使用以下 Indy 设置:

FIMAP4.Port := 143
FIMAP4.UseTLS := utUseRequireTLS;
FIdSSLIOHandlerSocketOpenSSL1.SSLOptions.Method := sslvSSLv23;

电子邮件服务器运行 Exchange 2010,并在端口 143 上运行 TLS,在端口 993 上运行 SSL。我正在使用最新版本的 ssl dll (1.0.1.3)。

我通过以下方式断开连接:

FIMAP4.IOHandler.InputBuffer.Clear;
FIMAP4.Disconnect;

更新:

从 EurekaLog 中摘录:

|IdExplicitTLSClientServerBase.pas|TIdExplicitTLSClient|TLSNotAvailable   |416[4]  |
|IdExplicitTLSClientServerBase.pas|TIdExplicitTLSClient|TLSNotAvailable |412[0] |
|IdExplicitTLSClientServerBase.pas|TIdExplicitTLSClient|ProcessTLSNotAvail|342[2] |
|IdExplicitTLSClientServerBase.pas|TIdExplicitTLSClient|ProcessTLSNotAvail|341[1] |
|IdIMAP4.pas |TIdIMAP4 |Login |1957[16]|
|IdIMAP4.pas |TIdIMAP4 |Connect |2019[28]|

这似乎表明 TLS 可用(我本以为 TLSNotAvailable 会提出

EIdTLSClientTLSNotAvailable.Create(RSTLSSLSSLNotAvailable); 

而不是

EIdTLSClientTLSNotAvailable.Create(RSTLSSLSSLCmdFailed);

但这让我想知道电子​​邮件服务器是否不支持 TLS,至少在端口 143 上)。

如果我不使用 TLS,我会得到:EIdReplyIMAP4Error:在无效状态下收到命令。

|IdReplyIMAP4.pas   |TIdReplyIMAP4   |RaiseReplyError               |242[1]  |
|IdTCPConnection.pas|TIdTCPConnection|RaiseExceptionForLastCmdResult|576[1] |
|IdIMAP4.pas |TIdIMAP4 |Login |1970[29]|
|IdIMAP4.pas |TIdIMAP4 |Connect |2019[28]|

这似乎是身份验证失败的消息,尽管我不确定原因。

最佳答案

尝试使用 sslvTLSv1 而不是 sslvSSLv23

关于delphi - Indy IMAP4 通过 SSL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12497806/

35 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com