【发布时间】:2015-11-02 15:52:00
【问题描述】:
我收到 ImapProtocolException 并显示一条消息:
"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) 一切正常,没有错误。
这是来自 Fetch 的 ProtocolLogger(您会注意到没有 Fetch Completed 消息):
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 "<20151026164845.43268801F3AD@mail-smtp08-mia.tpn.terra.com>") 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(uids) 时,Prototoogger 会给我一个有趣的信息:
S: X-mailer: Synapse - Pascal TCP/IP library by Lukas Gebauer
我在使用另一个库时已经遇到了这个邮件程序的问题。
据我了解,“Fetch” 属于 MailKit,“GetMessage” 属于 MimeKit。
那么,是否有任何变通方法可以继续使用 Fetch 而不是使用 GetMessage? 循环浏览约 1500 封邮件并下载每封邮件只是为了获取附件名称需要很长时间?
这里有人遇到过类似的邮件问题吗?“Synapse - Lukas Gebauer 的 Pascal TCP/IP 库”?
所以我想现在有更多信息和问题。自从开始这个线程以来,我正在处理 BODYSTRUCTURE 并且不太清楚(至少对我而言)RFC 3501。 我又要回来谈谈“突触”了,这里是来自 Log 的字符串,它给了我 Unexpected Token。
S: * 22300 FETCH (UID 32388 ENVELOPE ("Thu, 6 Sep 2018 13:19:10 -0300" "Zebra - XML sent" (("Zebra" NIL "invoice" "zebra.com")) NIL NIL ((NIL NIL "payments" "cat.com")) ((NIL NIL "invoice" "zebra.com") (NIL NIL "mary" "zebra.com")(NIL NIL "igor" "zebra.com")) NIL NIL "<20180906161753.3F4A774030A@proxy.tiger.com>") BODYSTRUCTURE (("text" "plain" ("charset" "UTF-8") NIL "Message text" "Quoted-printable" 209 6 NIL ("inline" NIL) NIL NIL)("text" "xml" ("name" "4441004299066.xml") NIL "4441004299066.xml" "Base64" 10642 137 NIL ("inline" ("filename" "4441004299066.xml")) NIL NIL)("application" "pdf" ("name" "4441004299066.pdf") NIL "4441004299066.pdf" "Base64" 48448 NIL ("inline" ("filename" "4441004299066.pdf")) NIL NIL) "mixed" ("boundary" "6624CFB2_17170C36_Synapse_boundary") "Multipart message" NIL))
正如 cmets 中所指出的,问题出在 “Multipart message”NIL 的末尾部分,另一方面,正常工作的 BodyStructure 可以以“NIL NIL”或**“NIL pt”结尾-br"。
所以,好的,现在问题来了。 BodyStructure 字符串中的最后两个字段应该是什么? 与此同时,我发现了这个: 1)“Multipart message”来自消息头的“Content-Description” 2)“pt-br”来自消息头的“Content-Language”
我完全同意遵循 RFC,但看起来最后 2 个值不清楚它们应该来自哪里。 我的意思是内容语言还是语言标签?内容处置或内容描述?
由于 Exchanges Server 和 Outlook、office365.com 被广泛使用,对我来说听起来我必须继续使用 GetMessage 而忘记 Fetch。
【问题讨论】:
-
jstedfast 有趣.... 在这两种情况下,使用另一个库和现在使用 MailKit,IMAP 服务器是 Exchange 2007 和 Exchange 2013(用于 Office 365)。这只发生在使用 Synapse 发出的 300k 消息范围内的消息中。我可以提供任何其他信息来探索更多信息吗?如果消息仍然存在,我可以尝试。最好使用 Fetch,并绕过预期,一旦连接丢失。所以重新开始吧。
-
请提出一个新问题,而不是 revising a three-year-old related question。我会在新的回答。谢谢。
-
这个 MailKit 提交应该可以解决这个 Exchange 服务器错误:github.com/jstedfast/MailKit/commit/…
-
也就是说,我强烈建议向 Microsoft Exchange 团队提交错误报告(并从 MailKit 向他们发送 ProtocolLog 以帮助他们查看问题并可能将他们链接到这个 Stackoverflow 问题)。跨度>