2015-11-02 2 views
0

Я получаю ImapProtocolException с сообщением:Mailkit Fetch «Неожиданный маркер в ответ IMAP: [QString:„многочастное сообщение“]»

"Unexpected token in IMAP response: [qstring: "Multipart message"]" when issuing zInbox.Fetch(uids, MailKit.MessageSummaryItems.UniqueId Or MailKit.MessageSummaryItems.BodyStructure Or MailKit.MessageSummaryItems.Envelope) 

Но с другой стороны, если я использую GetMessage (uids) все идет хорошо, без ошибок.

Вот ProtocolLogger из Fetch (вы можете заметить, не Fetch Завершена сообщение):

C: A00000790 UID FETCH 97824 (UID ENVELOPE BODYSTRUCTURE) 
S: * 24320 FETCH (UID 97824 ENVELOPE ("Mon, 26 Oct 2015 16:48:44 +0000" "NFe" ((NIL NIL "fatsc" "makrocentral.com.br")) NIL NIL ((NIL NIL "fiscal" "generale.ind.br")) NIL NIL NIL "<[email protected]>") BODYSTRUCTURE (("text" "plain" ("charset" "ISO-8859-1") NIL "Message text" "Quoted-printable" 227 8 NIL ("inline" NIL) NIL NIL)("application" "octet-stream" ("name" "42151000460986000506550040000387401000387404-nfe.xml") NIL "Attached file: 42151000460986000506550040000387401000387404-nfe.xml" "Base64" 11086 NIL ("attachment" ("filename" "42151000460986000506550040000387401000387404-nfe.xml")) NIL NIL)("application" "pdf" ("name" "42151000460986000506550040000387401000387404-nfe.pdf") NIL "Attached file: 42151000460986000506550040000387401000387404-nfe.pdf" "Base64" 50364 NIL ("attachment" ("filename" "42151000460986000506550040000387401000387404-nfe.pdf")) NIL NIL) "mixed" ("boundary" "017AC96C_005ED075_Synapse_boundary") "Multipart message" NIL)) 

При использовании GetMessage (UID), Protocologger дать мне интересную информацию:

S: X-mailer: Synapse - Pascal TCP/IP library by Lukas Gebauer 

У меня уже есть проблемы с этой почтой при использовании другой библиотеки.

Как я понимаю "Fetch" принадлежит MailKit и "GetMessage" принадлежит MimeKit.

Итак, есть ли обходные продолжить Fetch вместо использования GetMessage? Цикл через ~ 1500 писем и загрузка каждого из них, чтобы получить вложения, имена занимают очень много времени?

У кого-нибудь здесь были подобные проблемы с почтовой программой, подобной этой? «Synapse - библиотека Pascal TCP/IP от Lukas Gebauer»?

+0

jstedfast Интересно .... В обоих случаях, используя другой lib и теперь используя MailKit, IMAP-сервер - Exchange 2007 и Exchange 2013 (используется в Office 365). Это происходит только с сообщениями, выполненными с помощью Synapse в диапазоне 300 тыс. Msgs. Есть ли дополнительная информация, которую я могу дать, чтобы исследовать немного больше? Если сообщение еще есть, я могу попробовать. Было бы полезно использовать Fetch и обойти проверку, как только это произойдет, соединение потеряется. Так что начать все заново. – jzero

ответ

1

Проблема в том, что сервер IMAP ответил полностью сломанным ответом.

В соответствии со спецификацией IMAP, Мультисекционный синтаксис после "mixed" маркер должен быть:

body-ext-mpart = body-fld-param [SP body-fld-dsp [SP body-fld-lang 
       [SP body-fld-loc *(SP body-extension)]]] 
       ; MUST NOT be returned on non-extensible 
       ; "BODY" fetch 
body-fld-param = "(" string SP string *(SP string SP string) ")"/nil 
body-fld-dsp = "(" string SP body-fld-param ")"/nil 
body-fld-lang = nstring/"(" string *(SP string) ")" 
body-fld-loc = nstring 

но то, что мы получили, было: ("boundary" "017AC96C_005ED075_Synapse_boundary") "Multipart message" NIL)

Это по существу распадается на следующие типы лексем:

body-fld-param [SP] string [SP] nil 

Уведомление о том, как "Multipart message" не допускается. Что должно быть есть либо NIL или что-то вроде: ("inline" ("name" "value"))

Другими словами, ваш сервер IMAP не говоря грамматически правильный протокол IMAP. MailKit не может понять, что пытается сказать ваш сервер IMAP.

Примечание: проблема заключается в сервере IMAP, а не в Synapse Mailer.

+0

Мне было бы любопытно, как выглядел MIME, из-за чего сервер IMAP был настолько плохим. – Max

+0

Я попробую получить дополнительную информацию – jzero

Смежные вопросы