Определение начала и конца ответа на сообщение, возвращенного через IMAP - PullRequest
0 голосов
/ 21 октября 2011

Я пытаюсь проанализировать ответ, возвращенный IMAP, который содержит содержимое электронного письма.Как определить начало и конец сообщения, возвращенного из ответа, полученного через IMAP?

Ниже приведены 2 примера ответов, когда я получаю сообщение по IMAP:

. 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, как мне следует интерпретировать ответ и получить содержимое правильно?

1 Ответ

0 голосов
/ 21 октября 2011

Вы должны прочитать rfc 3501 ...

Строки IMAP могут быть представлены в 2 формах: 1) Строка кавычек.2) строковый литерал.

строковый литерал synatx: {number_of_bytes} CRLF - здесь вам нужно прочитать количество байтов.ПРИМЕЧАНИЕ: БАЙТЫ не строковые !!!

Также, как указано в спецификациях IMAP: необходимо быть готовым к анализу любого ответа в любое время, также любая строковая часть может быть строковым литералом.-полный функциональный клиент IMAP не простая работа.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...