use*_*523 13 python sockets gmail smtp
我正在尝试连接到Gmail SMTP邮件服务器,并按照给我的框架代码所述执行任务.只socket允许使用s(所以不允许smtplib).我需要:发送HELO命令MAIL FROM,RCPT TO和DATA.
发布了许多类似问题的案例,但他们没有得到正确答案.例如: 在Python中实现传输层安全性 - 简单邮件客户端
该程序需要连接到smtp.gmail.com端口587.我采取了两种不同的方法:
使用STARTTLS:
mailserver = 'smtp.gmail.com'
clientSocket = socket(AF_INET, SOCK_STREAM)
clientSocket.connect((mailserver, 587))
recv = clientSocket.recv(1024)
print recv
if recv[:3] != '220':
print '220 reply not received from server.'
#Send HELO command and print server response
heloCommand = 'HELO Alice\r\n'
clientSocket.send(heloCommand)
recv1 = clientSocket.recv(1024)
print recv1
if recv1[:3] != '250':
print '250 reply not received from server.'
#Send MAIL FROM command and print server response.
command = "STARTTLS\r\n"
clientSocket.send(command)
recvdiscard = clientSocket.recv(1024)
print recvdiscard
clientSocket.send("MAIL From: email\r\n")
recv2 = clientSocket.recv(1024)
print recv2
if recv2[:3] != '250':
print '250 reply not received from server.'
Run Code Online (Sandbox Code Playgroud)使用SSL:
clientSocketSSL = ssl.wrap_socket(clientSocket)
Run Code Online (Sandbox Code Playgroud)
然后clientSocketSSL替换所有的实例clientSocket.STARTTLS行也被删除并import ssl添加到顶部.
使用第一种方法时,该MAIL FROM:命令不返回任何内容.我得到以下输出:
250 mx.google.com at your service
220 2.0.0 Ready to start TLS
250 reply not received from server.
Run Code Online (Sandbox Code Playgroud)
使用SSL时,我与链接的帖子相同:
ssl.SSLError: [Errno 1] _ssl.c:504: error:140770FC:SSL routines:SSL23_GET_SERVER_HELLO:unknown protocol
Run Code Online (Sandbox Code Playgroud)
我在这里错过了什么吗?我想我最好的选择是使用TLS,但我不知道如何去做...我的MAIL FROM命令有问题吗?
使用SSL时,您需要连接到端口465而不是端口587.如果您使用STARTTLS,您仍需要使用ssl.wrap_socket,您只需稍后再执行 - 特别是在收到命令220响应后STARTTLS.在做完之后STARTTLS,你应该再做HELO一次,因为服务器应该忘记之前发生的任何事情STARTTLS.
在任何一种情况下,smtp.google.com端口465和587上的服务器仍然不会返回250对该MAIL命令的响应,因为它们要求您在发送邮件之前进行身份验证.你会收到530回应.AUTH在MAIL成功使用这些服务器之前,您需要使用带有gmail.com凭据的命令进行身份验证.
如果您不想进行身份验证,并且根据您需要执行的操作的详细信息,您可以尝试使用gmail.com MX记录中找到的服务器的端口25.目前,服务器是gmail-smtp-in.l.google.com并支持STARTTLS.
| 归档时间: |
|
| 查看次数: |
23156 次 |
| 最近记录: |