您可以ssl包装连接的套接字。这会给你的想法:
import sslimport base64from socket import *cc = socket(AF_INET, SOCK_STREAM)cc.connect(("smtp.gmail.com", 587))# cc.read(..)cc.send('helo tester.comrn')cc.send('starttlsrn')# cc.read(..) If the server responds ok to starttls# tls negotiation needs to happen and all# communication is then over the SSL socketscc = ssl.wrap_socket(cc, ssl_version=ssl.PROTOCOL_SSLv23)scc.send('auth loginrn')# scc.read(..)scc.send(base64.b64enpre('username')+'rn')scc.send(base64.b64enpre('password')+'rn')# css.send(# mail from:# rcpt to:# data# etc
有关此用户名/密码编码的信息,请参见此页面的“ AUTH
LOGIN”部分:http : //www.samlogic.net/articles/smtp-commands-reference-
auth.htm
将AUTH LOGIN命令发送到服务器后,服务器通过向客户端发送base64编码的文本(问题)来询问用户名和密码。在上面的示例中,“
VXNlcm5hbWU6”是单词“ Username”的base64编码文本,“ UGFzc3dvcmQ6”是单词“
Password”的base64编码文本。客户端也使用base64编码发送用户名和密码。在上面的示例中,“
adlxdkej”是base64编码的用户名,“ lkujsefxlj”是base64编码的密码。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)