PYTHON - отображение через TLS - PullRequest
0 голосов
/ 25 марта 2020

Я создаю программу захвата почты python. У меня проблема с конкретным почтовым ящиком. Вот аргументы, которые работают с использованием PHP imap_open:

'hostname'      => "{XXX.XX.X.XX:143/imap/tls/novalidate-cert}",
'login'         => "XXXXX",
'password'      => "XXXXX",

Я пытаюсь сделать следующее с python, но у меня возникает следующая ошибка:

    Traceback (most recent call last):
  File "scripts/MailCapture/check_folders.py", line 35, in <module>
    conn.starttls()
  File "/usr/lib/python3.7/imaplib.py", line 812, in starttls
    server_hostname=self.host)
  File "/usr/lib/python3.7/ssl.py", line 412, in wrap_socket
    session=session
  File "/usr/lib/python3.7/ssl.py", line 853, in _create
    self.do_handshake()
  File "/usr/lib/python3.7/ssl.py", line 1117, in do_handshake
    self._sslobj.do_handshake()
OSError: [Errno 0] Error


hostname = 'XXX.XX.X.X'
port = 143
isSSL = False
login = 'XXXXX'
password = 'XXXXX'

tls = ssl.create_default_context()

try:
    conn = IMAP4(hostname, port)
    conn.starttls(ssl_context=tls)
except (gaierror, IMAP4_SSL.error) as e:
    sys.exit('Error while connecting to ' + hostname + ' on port ' + str(port) + ' : ' + str(e))

try:
    conn.login(login, password)
except (gaierror, IMAP4_SSL.error) as e:
    sys.exit('Error while login to ' + hostname + ' on port ' + str(port) + ' : ' + str(e))

Я пытался без conn.starttls() и у меня появляется следующая ошибка Error while login to XXX.XX.X.XX on port 143 : LOGIN command error: BAD [b'Command received in Invalid state.']

Любые идеи, может быть, это работает в PHP из-за novalidate-cert, есть ли такая опция в Python?

Спасибо

...