Я пытаюсь отправить почту по протоколу smtp в очень простом, базовом c коде.
import socket
clientSocket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
port = 2525
clientSocket.connect(('localhost', port))
clientSocket.settimeout(5)
helo = 'HELO Me'
clientSocket.send(bytes(helo, 'utf-8'))
response = clientSocket.recv(1024).decode('utf-8')
print(f'Response: {response}')
# this response gets printed to the console
print('Succesfully connected via smtp')
mailFrom = 'MAIL FROM: myemail@gmail.com'
clientSocket.send(bytes(mailFrom, 'utf-8'))
response = clientSocket.recv(1024).decode('utf-8')
print(f'Response: {response}')
# here my program is blocked, and eventually gets a timeout
Проблема в том, что когда я получаю ответ, моя программа перестает работать при втором ответе. Я считаю, что мой вызов функции recv () неверен, поскольку, если я изменю первый recv () buffersize , скажем, на 20, он будет работать нормально, поэтому я предполагаю, что в сокете еще остались некоторые данные. Но как мне это прочитать?