简介
本人目前正在自学计算机网络相关知识,在练习第2章的套接字编程作业3时,觉得可以对原题进行一些改动,使得其功能更加灵活且对用户更加友好,可以很方便的用于测试某邮箱账号由用户本地到邮箱服务器的SMTP邮件发送服务是否可以正常使用。
实现的功能
1、输入被测试的邮箱账号、邮件服务器地址以及发送测试邮件的目的邮箱,使用被测试的邮箱向目的邮箱发送一封内容固定的纯文本测试邮件。
2、显示本机与邮件服务器之间的通讯过程(包括对登录过程中服务器发来的base64加密信息解密)
3、当用户名、密码及服务器地址输入错误时提示重输并重连
暂未实现的功能
1、自由编辑测试邮件的内容,以及发送含有HTML、图片或其他文件的非纯文本测试邮件
2、TLS/SSL协议支持
3、等待输入导致链接超时断线的重连功能
代码实现
from socket import socket, AF_INET, SOCK_STREAM
import base64
print("Welcome to SMTP mail test system v0.1!\nIt will use your mailbox to send a test mail to another mailbox!")
endmsg = "\r\n.\r\n"
exitmsg = "Thank you for using SMTP mail test system!"
# Choose a mail server (e.g. Google mail server) and call it mailserver
fromadd = input('Please enter your mailbox address: ')
frompass = input('Please enter your mailbox password: ')
mailserver = input('Please enter your SMTP server address: ')
toadd = input("Please enter the test mail's receiving address: ")
print('\r\n')
# Create socket called clientSocket and establish a TCP connection with mailserver
clientSocket = socket(AF_INET, SOCK_STREAM)
connect_smtp = False
while connect_smtp == False:
try:
clientSocket.connect((mailserver, 25))
print('-> Create TCP connection with SMTP server: {}\r\n'.format(mailserver))
recv = clientSocket.recv(1024).decode()
print('<- '+ recv)
if recv[:3] != '220':
print('! 220 reply not received from server.\r\n')
connect_smtp = True
except:
print('! Your SMTP server or network connection is unavailable.\r\n')
mailserver = input(