Как указано ниже в сообщении об ошибке, я не могу войти в систему, потому что я в состоянии LOGOUT, а не в состоянии NONAUTH. Как я могу получить от LOGOUT до NONAUTH?Почему я не могу войти на сервер imap дважды в Python
Пример ниже (очевидно, учетные данные для входа фальшивы ниже)
Python 2.7.3 (default, Aug 1 2012, 05:14:39)
[GCC 4.6.3] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import imaplib
>>> imap_server = imaplib.IMAP4_SSL("imap.gmail.com",993)
>>> imap_server.login('[email protected]', 'mypassword')
('OK', ['[email protected] Joe Smith authenticated (Success)'])
>>> imap_server.logout()
('BYE', ['LOGOUT Requested'])
>>> imap_server.login('[email protected]', 'mypassword')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/lib/python2.7/imaplib.py", line 505, in login
typ, dat = self._simple_command('LOGIN', user, self._quote(password))
File "/usr/lib/python2.7/imaplib.py", line 1070, in _simple_command
return self._command_complete(name, self._command(name, *args))
File "/usr/lib/python2.7/imaplib.py", line 825, in _command
', '.join(Commands[name])))
imaplib.error: command LOGIN illegal in state LOGOUT, only allowed in states NONAUTH
>>> quit()
Благодаря! Это точно! –
Пока вы объяснили, что состояние LOGOUT - это состояние, из которого нет возврата, вы точно не объяснили, как OP переходит в состояние NONAUTH - это состояние, в котором вы находитесь, когда вы делаете соединение IMAP? То есть после этого 'imaplib.IMAP4_SSL (" imap.gmail.com ", 993)'? Но вы не можете добраться до состояния NONAUTH из любого другого государства? Я не вижу ссылок в RFC3501. – Devy
@Devy: Я не объяснил весь автомат штата от RFC 3501, потому что RFC 3501 уже объясняет это довольно хорошо. В разделе 3 говорится: «Исходное состояние идентифицировано в приветствии сервера». В разделе 3.1 говорится: «Не проверенное состояние ... вводится, когда соединение начинается, если соединение не было предварительно аутентифицировано». В противном случае «Идентифицированное состояние ... вводится при запуске предварительно аутентифицированного соединения». После 3.4 есть диаграмма ASCII-ART, которая показывает все способы добраться до каждого состояния. Невозможно вернуться к «Не проверен подлинности», если вы оставите его. – abarnert