Xpoint
   [напомнить пароль]

Как правильно использовать imap_search ?

Метки: [без меток]
2010-09-12 13:04:48 [обр] el.terrible[досье]
Есть скрипт который читает почту по imap с аккаунта google. Пока это был единственный читатель, все было просто, новые сообщения находились по флагу UNSEEN.
Сейчас же к этому аккаунту обращаются другие читатели (т.е. обычные мейл клиенты). С этого момента у скрипта начинаются очевидные проблемы из-за отсутствия
флага UNSEEN, в то время как обычный мейл клиент читает почту корректно, независимо от наличия этого флага.
В связи с этим вопрос, как обычные мейл клиенты используют ımap команду SEARCH для поиска новых сообщений ?
Напрашивается использование дат (SINCE ...), но этот подход выглядит потенциально опасным из-за возможной рассинхронизации времени между сервером,
отправителем и читателем.
спустя 1 день 3 часа [обр] Алексей Севрюков(162/1280)[досье]

офф: el.terrible[досье] есть подозрение что обычные мейл клиенты хранят базу локально и при отправке запроса на сервер делают некий diff (сравнивают список локальных писем с серверным). Полагаю что какие то идентификаторы точно есть, и по ним и происходит сравнение. А дальше все просто: если письма с нужным идентификатором нет на сервере, оно удаляется с клиента, если его нет локально - скачивается с сервера, если есть в обоих местах - ничего не происходит.

Если Вам так необходим подобный доступ и правильное определение непрочитанных писем можно сделать "заплатку", а именно - поставить переадресацию всей почты на другой ящик (копирование), обрабатывать ее скриптом и удалять сразу после обработки. В этом случае и пользователи будут видеть письма, и скрипт все их обработает. Естественно зависит от Ваших нужд, способ может Вам и не подойти.

спустя 7 часов [обр] el.terrible[досье]
Алексей Севрюков[досье] Идентификаторы конечно есть, так и называются, UID. Дело в том, что список для сравнения может быть слишком уж длинным. Десятки и даже сотни тысяч сообщений в ящике - нормальная практика.
Поэтому есть сомнения что все делается настолько напролом, тем более что скорость приема сообщений с сервера явно не зависит от количества хранящейся там почты.
Форвардинг конечно решение, в каком то смысле. Но сейчас хочется читать все из одного аккаунта.
спустя 14 часов [обр] Алексей Севрюков(162/1280)[досье]
el.terrible[досье] А разве нет функций, которые позволяют получить с сервера только список этих UID без самих сообщений? При небольшой длине UID, даже при тысячах сообщений трафик будет не таким большим.
спустя 6 часов [обр] Прокаев2(13/35)[досье]

Алексей Севрюков[досье]SEARCH отдает UIDs :) http://tools.ietf.org/html/rfc3501#section-6.4.4

может посмотреть wiresharkom как это делает майл-клиент ?
но гугл не получится(ssl)

Powered by POEM™ Engine Copyright © 2002-2005