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

时间:2012-02-06 15:47:14

标签: delphi smtp openssl 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

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

1 个答案:

答案 0 :(得分:5)

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