我正在尝试连接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所需要的)。