Баз и работа с imap. Недопонимание...



  • Не могу понять как грузить самое первое письмо?

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

    Собственно вопрос заключается в том как более рационально поймать нужное мне письмо? Ведь в теории одновременно может прийти 2 письма, и если искать только самое первое то письмо я уже не найду. Вообщем прошу совета знатоков. Спасибо огромное заранее.



  • Забыл добавить что письмо отправляю на почту к которой бас подключен через imap. И поиск производится именно в этой почте на которую и было отправлено интересующее меня письмо изначально.



  • @Eva Единственно верный вариант это совершать поиск. Вы же когда сами заходите на почту, открываете не самое первое письмо, а то что нужно. Значит вы находите нужное письмо.



  • @Eva Нужно проверять все письма дата которых больше чем дата отправки вашего письма. Даты конечно нужно преобразовать в формат UTC



  • @Fox said in Баз и работа с imap. Недопонимание...:

    @Eva Единственно верный вариант это совершать поиск. Вы же когда сами заходите на почту, открываете не самое первое письмо, а то что нужно. Значит вы находите нужное письмо.

    Ну вот смотрите, как мне найти нужное письмо зная только отправителя? Писем на ящике может быть очень много однотипных. Нужно найти именно то которое нужно. То есть как именно работать с датой? Может быть сначала получать самое новое письмо, и уже потом ожидать письма еще новее ооталкиваясь от уже извесного письма?



  • @Fox
    но ведь поиск по mail.ru и еще хз каким сервисам через имап не работает или работает с неприглядной стороны

    @Eva
    я бы получил количество писем, получил письмо с идентификаторам равным количеству писем, это будет последнее полученное письмо, проверил то ли это письмо, а далее если известно что письмо точно получено, прошелся бы назад пока не нашел нужное письмо, или через заданные промежутки времени пытался получить письмо с идентификатором равным количеству писем +1 обернув это действие в игнорировать ошибки и если ошибки не было проверял на то письмо не то если не то то количеству писем +2, +3, ... +n



  • Я же описал алгоритм. У меня по нему с разных ящиков в том числе и с mail.ru забирает. Дату отправки берешь текущию ну можно отнять от не пару сек что бы наверняка. И потом начиная с последнего письма начинаешь проверку по датам, если даты писем меньше, то прекращаешь и ждешь пару сек и так по кругу. Единственное поиск по майл.ру не работает. Можно получить только по индексу письмо. Придется самому распарсивать заголовки для анализа



  • А как работает аймап? То есть самое новое сообщение всегда будет с последним индексом? То есть если 134 письма в почте, то 134-тое письмо будет самым новым, а 133 письмо предпоследним. Правильно мыслю?



  • @Eva
    аимап работает так



  • @ruzne

    2.3.1.2. Порядковый номер сообщения
    Относительные номера сообщений (от 1 до текущего числа писем в ящике). Номера ДОЛЖНЫ упорядочиваться в соответствии с увеличением уникальных идентификаторов. При добавлении каждого нового сообщения ему присваивается следующий свободный номер (на 1 больше последнего из использованных номеров).
    
    Порядковые номера сообщений могут изменяться в течение сеанса. Например, при полном удалении письма из ящика порядковые номера всех последующих сообщений уменьшаются.
    
    Кроме идентификации сообщений в смысле доступа к ним, порядковые номера могут использоваться в расчетах. Например, при получении неотмеченного отклика EXISTS 11 после того, как был получен неотмеченный отклик 8 EXISTS, позволяет вычислить, что были получены три новых сообщения — 9, 10, 11. Другой пример: если сообщение с номером 287 в ящике, содержащем 523 письма, имеет UID 12345, значит 286 сообщений имеют меньшие значения UID, а 236 — большие UID.
    

    Огромное спасибо. Ознакомился. Теперь точно знаю как реализовать поиск.


Log in to reply