Уведомления

Группа в Telegram: @pythonsu

#1 Ноя. 26, 2015 13:42:27

nutseeker
Зарегистрирован: 2015-11-26
Сообщения: 1
Репутация: +  0  -
Профиль   Отправить e-mail  

Вопросы по smtp и socket.

Рад приветствовать всех питонистов.

Вопрос заключается вот в чем. Взялся я тут накатать функцию 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, хотя в обеих случаях посылаются те же самые команды одному серверу. Хотелось бы получить совет от компететно публики, в чём же в данном случае кроется проблема?

Отредактировано nutseeker (Ноя. 26, 2015 13:42:56)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version