【问题标题】:Determining the start and end of the message response returned through IMAP确定通过 IMAP 返回的消息响应的开始和结束
【发布时间】:2011-12-12 12:12:27
【问题描述】:

我正在尝试解析 IMAP 返回的包含电子邮件内容的响应。如何确定从通过 IMAP 检索的响应返回的消息的开始和结束?

以下是我通过 IMAP 检索电子邮件时的 2 个响应示例:

. fetch 3728 body.peek[1]
* 3728 FETCH (BODY[1] {45}
Hello,
This is test message 1. 
:(
:)

)
* 3732 FETCH (FLAGS (\Seen \Recent))
* 3733 FETCH (FLAGS (\Seen \Recent))
. OK FETCH completed.

以及第二次检索:

. fetch 3729 body.peek[1]
* 3729 FETCH (BODY[1] {42}
Hello,
This is test message 2. :)

)
The above bracket is part of the message's content.

)
. OK FETCH completed.

首先,当新电子邮件进入帐户时,两次检索有时会给出不同的结局。其次,消息的结尾似乎带有一个括号和一个. OK FETCH Completed 响应。但是如果内容也包含括号会发生什么?然后我可能会读错括号而永远得不到完整的内容。

这样,在解析来自 IMAP 的响应时,我应该如何解释响应并正确获取内容?

【问题讨论】:

    标签: java parsing email imap


    【解决方案1】:

    你应该阅读 rfc 3501 ...

    IMAP 字符串可以用 2 种形式表示: 1) 引号字符串。 2) 字符串文字。

    字符串文字语法: {number_of_bytes}CRLF -- 这里你需要读取字节数。注意:字节不是字符串!!!

    正如 IMAP 规范所说:您需要随时准备解析任何响应,任何字符串部分也可以是字符串文字。

    编写稳定的全功能 IMAP 客户端并非易事。

    【讨论】:

      猜你喜欢
      • 2015-03-14
      • 2011-01-05
      • 1970-01-01
      • 2011-12-08
      • 1970-01-01
      • 2011-12-20
      • 1970-01-01
      • 2017-01-30
      • 1970-01-01
      相关资源
      最近更新 更多