SMTP&Python&Socket:无法发送数据

2024-04-29 12:18:26 发布

您现在位置:Python中文网/ 问答频道 /正文

出于学习目的,我只想使用套接字和SSL库,所以我设法连接到谷歌然后登录我的帐户。问题是我没能发邮件,我也不明白原因。 这是输出,所以直到DATA一切都是正确的。因此,我认为问题一定出在.send("DATA"....)之后的行中。 我使用的是python3,因此每次都需要.encode()和{}。在

import ssl
import base64
from socket import *
import sys

cc = socket(AF_INET, SOCK_STREAM)
cc.connect(("smtp.gmail.com", 587))
print(cc.recv(1024).decode())

cc.send(('helo tester.com\r\n').encode())
print(cc.recv(1024).decode())
cc.send(('starttls\r\n').encode())
print(cc.recv(1024).decode())

############# Authentication #############
scc = ssl.wrap_socket(cc, ssl_version=ssl.PROTOCOL_SSLv23)

scc.send(('auth login\r\n').encode())
print(scc.recv(1024).decode())

scc.send((base64.b64encode(('francesco.zuppichini@gmail.com').encode()))+('\r\n').encode())
print(scc.recv(1024).decode())

scc.send((base64.b64encode(('********').encode()))+('\r\n').encode())
print(scc.recv(1024).decode())

############# EMAIL #############
scc.send(("MAIL FROM: <francesco.zuppichini@gmail.com>" + '\r\n').encode())
print(scc.recv(1024).decode())
scc.send(("RCPT to: <francesco.zuppichini@gmail.com>" + '\r\n').encode())
print(scc.recv(1024).decode())
scc.send(("DATA" + '\r\n').encode())
print(scc.recv(1024).decode())
# start to send the Data
scc.send(("Subject: Test!" + '\r\n').encode())
scc.send(("From: francesco.zuppichini@gmail.com" + '\r\n').encode())
scc.send(("To: francesco.zuppichini@gmail.com" + '\r\n').encode())
scc.send(("Ciaooone" + '\r\n').encode())
scc.send(("'\r\n'.'\r\n'").encode())
print(scc.recv(1024).decode())
############# Exit #############
scc.send(("QUIT" + '\r\n').encode())
print(scc.recv(1024).decode())

scc.close()
cc.close()

输出:

^{pr2}$

Tags: importcomsendssldatagmailencodecc
1条回答
网友
1楼 · 发布于 2024-04-29 12:18:26

scc.send(("'\r\n'.'\r\n'").encode())

您不会像您计划的那样在这里发送\r\n.\r\n,而是发送了'\r\n'.'\r\n',即使用单引号。在

相关问题 更多 >