1
到目前爲止,我的代碼如下:如何連接在Python通過SSL套接字的Gmail
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:[錯誤1] _ssl.c:504:錯誤: 140770FC:SSL例程:SSL23_GET_SERVER_HELLO:嘗試運行此腳本時的未知協議。在其他時間,我已經得到關於服務器沒有及時響應的錯誤。
有沒有人有任何線索我做錯了什麼? (是的,我知道我可以使用smtplib處理smtp服務器,但這是一個練習)
啊。 但是,當我做AUTH LOGIN並提供我所有的憑據並且準備好做MAIL FROM命令時,我是否需要啓用TLS或者不關心smtp服務器? – ripit
@EthanWillis:在進行初始連接之後,您需要讓服務器切換到TLS(使用'STARTTLS'命令)。 Gmail的服務器*不關心,不會讓您在沒有加密連接的情況下發送電子郵件。 –
@GregHewgill我已經嘗試用telnet手動執行此操作,但在發出STARTTLS後,我不確定如何「協商」TLS連接,以便我可以發出AUTH LOGIN命令。也許我應該創造一個新的問題? – ripit