質問: smtp.live.comとTIdSmtpのSSLサポート(Indy、Delphi) 私は電子メールを送信するためにsmtp.live.comに接続しようとしています(live.comは2009年以来free 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に必要なものです)。