2013-06-04 4 views
1

Привет, я неожиданно столкнулся с ошибкой, использующей imaplib для некоторого кода, который работал отлично раньше.python imaplib - ошибка «неожиданный ответ»

import imaplib 
m = imaplib.IMAP4('myserver','port') 
m.login(r'username','password') 
m.select() 

дает мне ошибку

Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
    File "/usr/lib/python2.7/imaplib.py", line 649, in select 
    typ, dat = self._simple_command(name, mailbox) 
    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 899, in _command_complete 
    raise self.abort('command: %s => %s' % (name, val)) 
imaplib.abort: command: SELECT => unexpected response: '* 1520 EXISTS' 

я не уверен, что это значит. В противном случае сообщения электронной почты проходят нормально, и я использую davmail как сервер.

Программа полностью сохраняет вложения с определенным именем в определенной папке.

Я прошел через него и его определенно m.select(), где его падение.

Эта же программа работала абсолютно нормально до недавнего времени.

Что я делаю неправильно и как его исправить?

Журнал деятельности выглядит следующим образом

>>> import imaplib 
>>> m = imaplib.IMAP4('server','port') 
>>> Debug=4 
>>> m.debug 
0 
>>> m.debug=4 
>>> m.debug 
4 
>>> m.login(r'username','password') 
    01:26.55 > HLFI1 LOGIN "username" "password" 
    01:30.76 < HLFI1 OK Authenticated 
('OK', ['Authenticated']) 
>>> m.list() 
    01:56.33 > HLFI2 LIST "" * 
    02:00.04 < * LIST (\HasNoChildren) "/" "Trash/Sent Messages" 
    02:00.04 < * LIST (\HasNoChildren) "/" "Sync Issues/Server Failures" 
    02:00.04 < * LIST (\HasNoChildren) "/" "Sync Issues/Local Failures" 
    02:00.04 < * LIST (\HasNoChildren) "/" "Sync Issues/Conflicts" 
    02:00.04 < * LIST (\HasChildren) "/" "Sync Issues" 
    02:00.04 < * LIST (\HasNoChildren) "/" "Junk E-mail" 
    02:00.04 < * LIST (\HasNoChildren) "/" "Drafts" 
    02:00.04 < * LIST (\HasChildren) "/" "Trash" 
    02:00.04 < * LIST (\HasNoChildren) "/" "Sent" 
    02:00.04 < * LIST (\HasNoChildren) "/" "Outbox" 
    02:00.04 < * LIST (\HasNoChildren) "/" "INBOX" 
    02:00.04 < HLFI2 OK LIST completed 
('OK', ['(\\HasNoChildren) "/" "Trash/Sent Messages"', '(\\HasNoChildren) "/" "Sync Issues/Server Failures"', '(\\HasNoChildren) "/" "Sync Issues/Local Failures"', '(\\HasNoChildren) "/" "Sync Issues/Conflicts"', '(\\HasChildren) "/" "Sync Issues"', '(\\HasNoChildren) "/" "Junk E-mail"', '(\\HasNoChildren) "/" "Drafts"', '(\\HasChildren) "/" "Trash"', '(\\HasNoChildren) "/" "Sent"', '(\\HasNoChildren) "/" "Outbox"', '(\\HasNoChildren) "/" "INBOX"']) 
>>> m.select() 
    02:21.37 > HLFI3 SELECT INBOX 
    02:30.87 < * 1548 EXISTS 
    02:30.87 last 4 IMAP4 interactions: 
    00:16.73 < * OK [CAPABILITY IMAP4REV1 AUTH=LOGIN MOVE] IMAP4rev1 DavMail 4.3.0-2125 server ready 
    00:16.73 > HLFI0 CAPABILITY 
    00:16.74 < * CAPABILITY IMAP4REV1 AUTH=LOGIN MOVE 
    00:16.77 < HLFI0 OK CAPABILITY completed 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
    File "/usr/lib/python2.7/imaplib.py", line 649, in select 
    typ, dat = self._simple_command(name, mailbox) 
    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 899, in _command_complete 
    raise self.abort('command: %s => %s' % (name, val)) 
imaplib.abort: command: SELECT => unexpected response: '* 1548 EXISTS' 

** UPDATE **

Я теперь подал ошибку в питона-разработчика под

Bug report on Python

Где David Мюррей говорит, что ответ не соответствует RFC

An г а второй в davmail SourceForge под

davmail bug report

M guessant говорит, что это необходимо для IMAP сохранить жизнь.

Я буду держать это в курсе событий ..

+0

Был ли обновлен сервер в последнее время? В отдельности это выглядит как часть допустимой строки ответа IMAP, но, возможно, она появляется вне контекста или, возможно, есть ошибка в 'imaplib'. Можете ли вы получить подробное ведение журнала IMAP-сессии и добавить к вопросу, пожалуйста? – tripleee

+0

Привет @tripleee спасибо за ваш комментарий. журнал добавлен. –

ответ

1

Оказывается, что пространство-проложенный количество сообщений в RECENT ответа является то, что вызывает это. Мне непонятно, следует ли его классифицировать как ошибку в Python imaplib или на сервере IMAP, который вы используете. Я бы сказал, что imaplib должен быть устойчивым против этого, независимо от того, что говорит спецификация. Возможно, вы должны подать отчет об ошибке?

(Если вы это сделаете, позаботьтесь о том, чтобы добавить сведения о том, какой сервер производит этот ответ. Если это коммерческий продукт с солидной рыночной долей, важно исправить, тогда как, конечно, если это ваш собственный простой Python, им может быть все равно.)

+0

Здравствуйте, @tripleee не смогли найти ite для записи отчетов об ошибках imaplib. Не могли бы вы указать мне в правильном направлении? –

+0

[bugs.python.org] (http://bugs.python.org/), кажется, место, но если вы используете определенную версию, можете подать ее против своего трекера ошибок и заставить их поднимать проблему вверх по течению. В любом случае, пожалуйста, проследите здесь, указав на ошибку. См. Также http://docs.python.org/devguide/ Спасибо! – tripleee