python - 如何在Python中通过ssl使用套接字连接到gmail

标签 python sockets

到目前为止我的代码如下:

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 例程:SSL23_GET_SERVER_HELLO:未知协议(protocol)。有时我会收到有关服务器未及时响应的错误。

有人知道我做错了什么吗? (是的,我知道我可以使用 smtplib 来处理 smtp 服务器,但这是一个练习)

最佳答案

端口 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

关于python - 如何在Python中通过ssl使用套接字连接到gmail,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12593654/

相关文章:

Python 请求模块在获取请求期间不返回整页

python - 编写优秀的 Twisted 网络资源

python - 匹配 python 正则表达式中的复杂表达式

linux - 为什么在电缆连接断开的情况下,socket send() 会返回成功代码?

python - 这个字典作业在做什么?

python - 无法在带有python http服务器的浏览器中查看文件

sockets - Java NIO如何构造-socketchannel和socketserverchannel在内部工作?

java - 页面刷新时"Address already in use"

sockets - ZMQ用户过滤

从另一个 C 进程创建一个新的独立进程