Вопрос заключается вот в чем. Взялся я тут накатать функцию smtp-авторизации на сокетах, используя python 2.7. Получилось, исходя из моих скромных познаний, в простейшем виде следующее:
def socket_auth(adr, port, login, pwd): s=socket.socket(socket.AF_INET, socket.SOCK_STREAM) s=ssl.wrap_socket(s,None,None) s.connect((adr,port)) print(s.recv(1024)) s.send('ehlo localhost\r\n') print(s.recv(1024)) s.send('AUTH PLAIN '+base64.encodestring('\0'+login+'\0'+pwd)+'\r\n') print(base64.encodestring('\0'+login+'\0'+pwd)) print(s.recv(1024))
Аналог этой функции с использованием smtplib выглядел бы так:
def smtplib_auth(adr, port,login,pwd): s=smtplib.SMTP_SSL(adr,port) s.set_debuglevel(1) s.ehlo('localhost') s.login(login,pwd)
Нюанс заключается в том, что при использовании абсолютно одинаковых значений параметров второй вариант с использованием smtplib работает корректно и отображает сообщение с кодом 235, как и должно быть. Первая же функция на сокетах на последенем принте выдает мессидж с кодом 500 и текстом syntax error command unrecognized, хотя в обеих случаях посылаются те же самые команды одному серверу. Хотелось бы получить совет от компететно публики, в чём же в данном случае кроется проблема?