Python 使用socket通过SMTP发送qq邮件

 全流程完整代码如下

from socket import *
import base64

serverName = 'smtp.qq.com' 
serverPort = 25
#  AF_INET代表Ipv4    SOCK_STREAM 代表TCP协议
clientSocket = socket(AF_INET, SOCK_STREAM)
clientSocket.connect((serverName, serverPort))
msg = clientSocket.recv(2048)
print(msg.decode())
clientSocket.send("HELO myName\r\n".encode())
msg = clientSocket.recv(2048)
print(msg.decode())
clientSocket.send("AUTH login\r\n".encode())
msg = clientSocket.recv(2048)
print(msg.decode())
clientSocket.send(base64.b64encode("xxxxxxxx@qq.com".encode())+b'\r\n')
msg = clientSocket.recv(2048)
print(msg.decode())
clientSocket.send(base64.b64encode("xxxxxxxx".encode())+b'\r\n')
msg = clientSocket.recv(2048)
print(msg.decode())
clientSocket.send(b"mail from: <xxxxxxxx@qq.com>\r\n")
msg = clientSocket.recv(2048)
print(msg.decode())
clientSocket.send(b"rcpt to: <xxxxxxxx@qq.com>\r\n")
msg = clientSocket.recv(2048)
print(msg.decode())
clientSocket.send(b"data\r\n")
msg = clientSocket.recv(2048)
print(msg.decode())
clientSocket.send(b"From: <xxxxxxxx@qq.com>\r\n")
clientSocket.send(b"To: <xxxxxxxx@qq.com>\r\n")
clientSocket.send(b"subject: socket not SSL\r\n")
clientSocket.send(b"socketMainContain not SSL\r\n")
clientSocket.send(b".\r\n")
msg = clientSocket.recv(2048)
print(msg.decode())
clientSocket.send(b"quit\r\n")
msg = clientSocket.recv(2048)
print(msg.decode())
clientSocket.close()

注意事项:

1. 每个命令的大小写是严格要求的,如果大小写不符合要求会 502 invalid input

2. 每次send完成某个命令后,需要recv回报信息,不然下个流程会 502

3. clientSocket.send(base64.b64encode("xxxxxxxx".encode())+b'\r\n')  这里+b'\r\n' 是为了防止\r\n被base64编码导致的502,且只有验证过程需要base64编码。

4.验证密码不是邮箱密码,是qq邮箱授权码

5.建议使用  smtplib

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值