8

我正在尝试连接到 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 有关。谁能帮我解开这个谜?我错过了设置吗?

4

1 回答 1

5

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

于 2012-02-06T21:38:40.390 回答