1

これまでのところ、私のコードは次のとおりです。

from socket import *
import ssl
msg = "\r\n smtp..."
endmsg = "\r\n.\r\n"

# Choose a mail server (e.g. Google mail server) and call it mailserver
mailserver = ("smtp.gmail.com", 587)

# Create socket called clientSocket and establish a TCP connection with mailserver over SSL
clientSocket = socket(AF_INET, SOCK_STREAM);
clientSocket = ssl.wrap_socket(clientSocket, ssl_version=ssl.PROTOCOL_SSLv23)
clientSocket.connect(mailserver)

#Print server response
recv = clientSocket.recv(1024)
print recv
if recv[:3] != '220':
print '220 reply not received from server.'

このスクリプトを実行しようとすると、エラー メッセージ ssl.SSLERrror: [Errno 1] _ssl.c:504: error:140770FC:SSL routines:SSL23_GET_SERVER_HELLO:unknown protocol が表示されます。また、サーバーが時間内に応答しないというエラーが発生したこともあります。

誰かが私が間違っていることについての手がかりを持っていますか? (そして、smtp サーバーを処理するために smtplib を使用できることはわかっていますが、これは演習です)

4

1 に答える 1

2

ポート587は暗号化されていません。

telnet smtp.gmail.com 587

Trying 74.125.142.109...
Connected to gmail-smtp-msa.l.google.com.
Escape character is '^]'.
220 mx.google.com ESMTP aa4sm9457625igc.15
helo test.com
250 mx.google.com at your service
于 2012-09-26T02:24:53.460 に答える