2016-08-24 8 views
1
def connect_imap(): 
    m = imaplib.IMAP4_SSL("imap.gmail.com", 993) 
    print("{0} Connecting to mailbox via IMAP...".format(datetime.datetime.today().strftime("%Y-%m-%d %H:%M:%S"))) 
    details = login_credentials() 
    m.login(details[0], details[1]) 
    return m 


m = connect_imap() 
typ, data = m.search(None, 'ALL') 
m.close() 
m.logout() 

上記のコードの出力は次のとおりです。imaplib.error:状態AUTHでの違法なコマンド検索は、状態のみに許さSELECTED

2016-08-24 10:55:34 Connecting to mailbox via IMAP... 
    Traceback (most recent call last): 
     File "/home/zoikmail/Desktop/test.py", line 25, in <module> 
     typ, data = m.search(None, 'ALL') 
     File "/usr/lib/python2.7/imaplib.py", line 640, in search 
     typ, dat = self._simple_command(name, *criteria) 
     File "/usr/lib/python2.7/imaplib.py", line 1088, in _simple_command 
     return self._command_complete(name, self._command(name, *args)) 
     File "/usr/lib/python2.7/imaplib.py", line 838, in _command 
     ', '.join(Commands[name]))) 
    imaplib.error: command SEARCH illegal in state AUTH, only allowed in states SELECTED 
    [Finished in 1.2s with exit code 1] 
    [shell_cmd: python -u "/home/zoikmail/Desktop/test.py"] 
    [dir: /home/zoikmail/Desktop] 
    [path: /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games] 

は、上記のコードで何が悪いのでしょうか?

+0

答えが得られたときは、まず 'imap4.select()'を実行しなければなりません。 'imap4.search()' – user5319825

答えて

2

IMAP-Serverに正常に接続した後にメールボックスを選択する必要があります。接続した後、検索前 使用

m.select() 

+1

を実行して、 'm.select()'の結果を確認してください。存在しないIMAPフォルダを使用して呼び出すと、例外は発生しません。 –

関連する問題