from socket import * from base64 import * mailfrom = "mail from:2@test.com\r\n" rcptto = "rcpt to:1@test.com\r\n" data = "data\r\n" quitmsg = "quit\r\n" # 填写代码使程序发送的邮件中包含内容为 "Hello World!"。 msg = "Hello World!" endmsg = "\r\n.\r\n" #本地搭建的邮件服务器IP地址。 mailserver = 'localhost' # 在端口25上启动邮件服务器。 mailport = 25 connectaddress = (mailserver, mailport) # 创建 socket 和邮件服务器建立 TCP 连接。 clientSocket = socket(AF_INET, SOCK_STREAM) clientSocket.connect(connectaddress) recv = clientSocket.recv(1024) if recv.decode()[:3] != '220': print ('220 reply not received from server.') # 发送 HELO 命令,打印服务器响应。 heloCommand = 'HELO Alice\r\n' clientSocket.send(bytes(heloCommand.encode())) recv1 = clientSocket.recv(1024) if recv1.decode()[:3] != '250': print ('250 reply not received from server.') #发送登陆认证信息 login = b'auth login\r\n' clientSocket.send(login) recv2 = clientSocket.recv(1024).decode('utf-8') print ('登陆认证',recv2) #发送用户名 userCommand = b64encode('2@test.com'.encode('utf-8')) clientSocket.send((str(userCommand,encoding='utf-8')+'\r\n').encode()) recv3 = clientSocket.recv(1024).decode('utf-8') print ('用户名',recv3) #发送密码 password = b64encode('2'.encode('utf-8')) clientSocket.send((str(password,encoding='utf-8')+'\r\n').encode()) recv4 = clientSocket.recv(1024).decode('utf-8') print ('密码',recv4) # 发送 MAIL FROM 命令,打印服务器响应。 clientSocket.send(bytes(mailfrom.encode())) check = clientSocket.recv(1024) print(check) # 发送 RCPT TO 命令,打印服务器响应。 clientSocket.send(bytes(rcptto.encode()))#将RCPT发送到命令和打印服务器响应。 check1 = clientSocket.recv(1024) print(check1) # 发送 DATA 命令,打印服务器响应。 clientSocket.send(bytes(data.encode()))#发送数据命令和打印服务器响应。 check2 = clientSocket.recv(1024) print(check2) # 发送邮件内容。消息以单个"." 结束。 clientSocket.send(bytes((mailfrom+msg+endmsg).encode()))#发送消息数据。 check3 = clientSocket.recv(1024) print(check3) # 发送 QUIT 命令,获取服务器响应。 clientSocket.send(bytes(quitmsg.encode())) check4 = clientSocket.recv(1024) print(check4) clientSocket.close()