Как использовать IMAP4.authenticate для настройки соединения с сервером imap - PullRequest
0 голосов
/ 24 апреля 2019

Я могу подключиться к нашему серверу IMAP, но не могу пройти проверку подлинности. Я попытался использовать метод IMAP.login, но затем я получил неправильное имя пользователя и пароль (я знаю, что на 100% уверен, что имя пользователя и пароль верны).

Итак, я хочу попробовать это с IMAP.authenticate. Исходя из возможностей:

(b'AUTH=DIGEST-MD5', b'ENABLE', b'IDLE', b'IMAP4REV1', b'LITERAL+', b'LOGINDISABLED', b'METADATA-SERVER', b'QUOTA', b'SASL-IR', b'UIDPLUS')

Я знаю, что должен использовать DIGEST-MD5 в качестве механизма. Но я не могу понять, что использовать для authobject.

Итак, что у меня есть:

import imaplib
import hashlib

hash = hashlib.md5('username'.encode('UTF-8'))
usn = hash.digest()


with imaplib.IMAP4_SSL(host="hostx.com", port=221) as sess:
    print(sess.capability())
    # z = sess.login('username', 'password')
    # print(z)
    resp = sess.authenticate('DIGEST-MD5', usn)

Но это, очевидно, не работает. Я получаю ошибку:

Traceback (most recent call last):
  File "C:/Users/starr499/Documents/imap_vvm_poc/vvm_poc.py", line 31, in <module>
    resp = sess.authenticate('DIGEST-MD5', usn)
  File "C:\Users\starr499\AppData\Local\Programs\Python\Python37-32\lib\imaplib.py", line 428, in authenticate
    typ, dat = self._simple_command('AUTHENTICATE', mech)
  File "C:\Users\starr499\AppData\Local\Programs\Python\Python37-32\lib\imaplib.py", line 1196, in _simple_command
    return self._command_complete(name, self._command(name, *args))
  File "C:\Users\starr499\AppData\Local\Programs\Python\Python37-32\lib\imaplib.py", line 996, in _command
    literal = literator(self.continuation_response)
  File "C:\Users\starr499\AppData\Local\Programs\Python\Python37-32\lib\imaplib.py", line 1373, in process
    ret = self.mech(self.decode(data))
TypeError: 'bytes' object is not callable

Как мне использовать IMAP.authenticate?

...