0
爲了學習目的,我只想使用套接字和SSL庫,所以我設法連接到google.com並登錄到我的帳戶。問題是我沒有設法發送任何電子郵件,我不明白原因。 這是輸出,所以直到DATA
一切都是正確的。因此我認爲這個問題必須在.send("DATA"....)
之後。 我使用的是python 3,因此我需要每次都去.encode()
和.decode()
。SMTP&Python&Socket&:無法發送數據
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(('[email protected]').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: <[email protected]>" + '\r\n').encode())
print(scc.recv(1024).decode())
scc.send(("RCPT to: <[email protected]>" + '\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: [email protected]" + '\r\n').encode())
scc.send(("To: [email protected]" + '\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()
OUTPUT:
220 smtp.gmail.com ESMTP bg10sm91176924wjb.46 - gsmtp
250 smtp.gmail.com at your service
220 2.0.0 Ready to start TLS
334 VXNlcm5hbWU6
334 UGFzc3dvcmQ6
235 2.7.0 Accepted
250 2.1.0 OK bg10sm91176924wjb.46 - gsmtp
250 2.1.5 OK bg10sm91176924wjb.46 - gsmtp
354 Go ahead bg10sm91176924wjb.46 - gsmtp
是的,你是可靠的!有用!謝謝 :) – Francesco