对smtp.live.com和TIdSmtp(Indy,Delphi)的SSL支持

Cod*_*345 8 delphi openssl smtp indy indy10

我正在尝试连接到smtp.live.com发送电子邮件(live.com支持自2009年以来的免费pop3/smtp,但这对我来说完全是新闻).

以下是当我尝试连接到smtp.live.com端口587时发生的情况:

Method sslvSSLv2  - timeout (obviously the server does not support SSL2)
Method sslvSSLv3  - Error connecting with SSL. - error:1408F10B:SSL routines:SSL3_GET_RECORD:wrong version number
Method sslvSSLv23 - Error connecting with SSL. - error:140770FC:SSL routines:SSL23_GET_SERVER_HELLO:unknown protocol
Method sslvTLSv1  - Error connecting with SSL. - error:1408F10B:SSL routines:SSL3_GET_RECORD:wrong version number
Run Code Online (Sandbox Code Playgroud)

我使用与sslvSSLv23和sslvTLSv1相同的代码,它与gmail smtp(smtp.gmail.com,端口465)服务器一起正常工作.此外,Outlook在检查SSL时正常发送邮件,在端口587上发送邮件,因此它可能与OpenSSL相关.任何人都可以帮我解开这个谜团吗?我错过了设置的东西吗?

Rem*_*eau 5

与GMail一样,Live.com的端口587要求客户端连接未加密的设备并发送STARTTLS命令,然后再启动SSL / TLS握手。在Indy 10中,可以通过在连接之前将TIdSMTP.UseTLS属性设置为来实现utUseExplicitTLS。听起来好像您已将该UseTLS属性设置为utUseImplicitTLS(这是GMail端口465所需要的)。