为什么它只打印横幅,并在结果上挂起/超时Python3(插座,系统)

为什么它只打印横幅,并在结果上挂起/超时Python3(插座,系统),python,python-3.x,sockets,Python,Python 3.x,Sockets,试图构建一个简单的SMTP工具来帮助VRFY用户。没有得到期望的输出 不确定这是否是一个编码问题,或者我是否遗漏了一些非常简单的东西,或者是否有一种更简单的方法来解决这个问题 请帮忙:) #-*-编码:utf-8-*- 导入系统 导入套接字 如果len(sys.argv)!=三: 打印('[*]用法:smtpvrfy.py') ip=sys.argv[1] 用户名=sys.argv[2] 打印('SMTP工具') 打印(25*'-') s=socket.socket(socket.AF_INET

试图构建一个简单的SMTP工具来帮助VRFY用户。没有得到期望的输出

不确定这是否是一个编码问题,或者我是否遗漏了一些非常简单的东西,或者是否有一种更简单的方法来解决这个问题

请帮忙:)

#-*-编码:utf-8-*-
导入系统
导入套接字
如果len(sys.argv)!=三:
打印('[*]用法:smtpvrfy.py')
ip=sys.argv[1]
用户名=sys.argv[2]
打印('SMTP工具')
打印(25*'-')
s=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
connect=s.connect((ip,25))
banner=s.recv(1024)
印刷品(横幅)
s、 发送((b'VRFY')+用户名.encode('utf-8'))
结果=s.recv(1024)
打印(结果)
s、 关闭()
------
结果如下:
------
SMTP工具
-------------------------
b'220.localdomain ESMTP后缀\r\n'
b'421 4.4.2热线。本地域错误:超过超时\r\n'

由于编码/解码问题。这个修好了

connect = s.connect((ip,25))
banner = s.recv(1024).decode()
print(banner)
s.send(b'VRFY %s\n' % str(sys.argv[2]).encode())
results = s.recv(1024).decode()
print(results)
s.close()```

由于编码/解码问题。这个修好了

connect = s.connect((ip,25))
banner = s.recv(1024).decode()
print(banner)
s.send(b'VRFY %s\n' % str(sys.argv[2]).encode())
results = s.recv(1024).decode()
print(results)
s.close()```

我很确定,问题出在没有换行符来终止命令,而不是编码。我注意到,你在这里是对的,.decode()唯一的问题是去掉了输出中的字节字符,谢谢你的解释!我很确定,问题出在没有换行符来终止命令,而不是编码。我注意到,你在这里是对的,.decode()唯一的问题是去掉了输出中的字节字符,谢谢你的解释!