GMail IMAP - Как получить список разговоров (темы)? - PullRequest
5 голосов
/ 22 мая 2011

Я пытаюсь создать похожий вид, как в GMail.Я знаю, что у GMail IMAP есть расширение X-GM-THRID, которое я могу использовать в команде FETCH, но это возвращает мне те же самые числа элементов, и я должен сгруппировать их вручную по идентификатору потока.Существует ли более быстрый способ сгруппировать это?Я имею в виду, может ли сервер Google Imap возвращать мне список сообщений, сгруппированных по идентификатору потока (как в веб-интерфейсе Gmail)?Чтобы быть более конкретным:

Если у меня есть этот список (THREAD ID | TEXT)

  • 12345 "привет"
  • 12345 "привет"
  • 12345 "Что случилось?"
  • 67890 "ты здесь?"
  • 67890 "нет, я не"

Я хочу получить только с сервера:

  • 12345 "Привет"
  • 67890 "Вы здесь?"

Могу ли я это сделать?Наконец, я должен был бы сгруппировать это сам, но это решение неэффективно и медленно (у меня много сообщений для группировки)

С уважением и извините за мой английский.

Ответы [ 2 ]

5 голосов
/ 25 мая 2011

Заголовок «In-Reply-To» дочернего элемента должен иметь значение заголовка «Message-Id» родительского элемента.

В заголовке «References» есть еще одно поле, которое содержит идентификаторы сообщений:все его родители.

вы можете использовать любой из них в соответствии с вашим требованием.

0 голосов
/ 21 апреля 2017

Лет, но:

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

Что вы можете сделать, это извлечь только поля UID и X-GM-THRID, что является быстрым (около 40 байтов или около того на сообщение).Затем вы найдете первое сообщение для каждого потока, а затем используйте UID FETCH, чтобы получить только те.Не загружая весь конверт сообщения, пока вы не узнаете, какие сообщения нужно извлечь, вы сэкономите большую пропускную способность.

...