5
아래의 오류 메시지는 상태가 NONAUTH가 아닌 LOGOUT 상태이므로 로그인 할 수 없습니다. LOGOUT에서 NONAUTH로 어떻게 이동합니까? (분명히 로그인 자격 증명 아래 위조하는) 아래왜 파이썬에서 imap 서버에 두 번 로그인 할 수 없습니까?
예
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