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



我正在尝试连接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

我对sslvSSLv23和sslvTLSv1使用了相同的代码,它在gmail smtp(smtp.gmail.com,端口465)服务器上正常工作。此外,Outlook在检查SSL并在端口587上正常发送邮件,因此它可能与OpenSSL有关。有人能帮我解开这个谜吗?我错过了设定吗?

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

最新更新