Cześć. Korzystam z pakietu laravel imap aby pobrać wiadomości z skrzynki pocztowej do systemu.
Samo pobieranie działa prawidłowo, wiadomości zapisuję w bazie jednak nie wiem jak pobierać nowe wiadomości których jeszcze nie ma w bazie tak aby nie pobierać wszystkich wiadomości za każdym razem.
Chcę uruchamiać CRON co kilka minut tak aby sprawdzał i pobierał tylko nowe wiadomości.
Jak to osiągnąć
Może pobierz nagłówki wiadomości i sprawdź które masz w bazie.
Tak właśnie myślałem ale zastanawiam się czy nie ma czegoś bardziej wydajnego niż sprawdzanie za każdym razem. Dodatkowo trzeba cały nagłówek czy można jakieś ID?
ja myślałem żeby mieć nagłówki zapisane w bazie i później zrobić in_array()
jednak nie jestem przekonany co do wydajności zwłaszcza jeśli nie będzie to 10 tylko około 3000 wiadomości których przybywa
Jesli uzywasz imap to nic nie pobierasz zadnehj poczty ani zalacznikow
@chomikowski: To pewnie zależy od klienta pocztowego, ale w niektórych lista wiadomości jest pobierana raczej, bo klient mimo braku połączenia z Internetem pokazuje listę wiadomości.
hipekk napisał(a):
@chomikowski: To pewnie zależy od klienta pocztowego, ale w niektórych lista wiadomości jest pobierana raczej, bo klient mimo braku połączenia z Internetem pokazuje listę wiadomości.
to wlasnie definiuje protokol albo pop3 gdzie pobierasz emaile z serwera albo imap gdzie pracujesz na katalogu i np mozesz skasowac wyslany juz email
Ja mówiłem o IMAPie.
Mimo, że mam konto skonfigurowane na IMAP to listę wiadomości widzę też wtedy gdy jestem offline.
@hipekk: no tak wlasnie o tym mowie ze w IMAPIE nie sciagasz poczty tylko pracujesz na katalogu
Napisałeś
chomikowski napisał(a):
Jesli uzywasz imap to nic nie pobierasz zadnehj poczty ani zalacznikow
A ja Ci mówię, że niektóre programy ściągają (również przy użyciu IMAPa) - dzięki temu lista wiadomości jest dostępna również przy braku połączenia z Internetem.
Jeżeli program nic nie ściąga to skąd wie jakie są maile w skrzynce w chwili gdy nie ma połączenia z Internetem?
@hipekk: dobra podpowiem ci, na imap masz tylko zsynchronizowane naglowki, wiec polacz sie z imap wejdz do skrzynki odbiorczej, wylacz inetrent i zobacz czy mozesz odczytac poczte albo sciagnac zalacznik :) jak widzisz nie da sie
A gdzie ja pisałem, że się da?
@chomikowski: to nie jest tak, że w trybie offline nie możesz odczytywać wiadomości z protokołem IMAP (no, chyba, że używasz do tego przeglądarki internetowej). Wszystko zależy jak jest ustawiony program pocztowy a zwykle ustawione są tak, że (nawet na przykładzie Outlook) wiadomości są ściągane protokołem IMAP i zapisywane lokalnie na maszynie (@hipekk w tym wypadku możesz zapisywać je do bazy) dzięki czemu są one dostępne dostępu do sieci.
Następnie przy ponownym sprawdzeniu poczty, następuje synchronizacja wiadomości (ściągane nagłówki @hipekk - https://www.php.net/manual/en/function.imap-headers.php w odpowiedzi dostajesz ID wiadomości, które pozwoli Ci na identyfikacje wiadomości na serwerze i u Ciebie w bazie) i "dociąganie" tylko tego czego brakuje. To tak w skrócie.