![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 130 Pomógł: 0 Dołączył: 18.09.2021 Ostrzeżenie: (0%) ![]() ![]() |
Hej
Napisałem prosty skrypcik w PHP który korzysta z biblikiteki php-imap i ma za zadanie znaleść w mojej skrzynce wszystkie maile powiedzmy od Allegro. Użyłem takiego kodu:
Tu jest ok, zwraca mi ładnie tablicę z id wiadomości otrzymanych po 8 sierpnia. Jednak gdy zrobię tak:
dostaję: Cytat bool(false) Dlaczego? Co robię nie tak? |
|
|
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 395 Pomógł: 71 Dołączył: 15.07.2014 Ostrzeżenie: (0%) ![]() ![]() |
Z dokumentacji:
Return false if it does not understand the search criteria or no messages have been found. Swoją drogą, dlaczego użyłeś 'BODY', a nie 'SUBJECT' albo 'FROM'? |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 130 Pomógł: 0 Dołączył: 18.09.2021 Ostrzeżenie: (0%) ![]() ![]() |
Dla SUBJECT też zwraca false. Jak to debugować? Skąd mam wiedzieć czy to funkcja, czy serwer Onetu nie zrozumiał mojego wyszukiwania?
|
|
|
![]()
Post
#4
|
|
![]() Grupa: Zarejestrowani Postów: 531 Pomógł: 55 Dołączył: 3.01.2016 Skąd: Łowicz Ostrzeżenie: (0%) ![]() ![]() |
c1 = imap_search($mbox, 'SINCE "8 August 2022"', SE_UID); $c2 = imap_search($mbox, 'BODY "allegro"', SE_UID, "UTF-8"); czy czasami w dokumentacji nie ma tak imap_search($imap_stream, $criteria, [$options, $charset]); czy trzeci parametr to tablica nie string ? Ten post edytował LowiczakPL 12.03.2023, 09:39:25 -------------------- Szukam zleceń Symfony, Laravel, Back-End, Front-End, PHP, MySQL ...
|
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 130 Pomógł: 0 Dołączył: 18.09.2021 Ostrzeżenie: (0%) ![]() ![]() |
W tej dokumentacji pisze, że trzeci argument to flags i może przyjmować taką wartość jak w przykładzie.
Zresztą:
działa, tylko wyszukiwanie nie chce działać. Czy znacie może jakąś inną bibliotekę PHP która obsługiwałaby wyszukiwanie przez IMAP? |
|
|
![]()
Post
#6
|
|
![]() Grupa: Zarejestrowani Postów: 395 Pomógł: 71 Dołączył: 15.07.2014 Ostrzeżenie: (0%) ![]() ![]() |
Nie korzystałem, ale ta jest chyba najbardziej aktualna i wciąż utrzymywana:
https://github.com/ddeboer/imap |
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 130 Pomógł: 0 Dołączył: 18.09.2021 Ostrzeżenie: (0%) ![]() ![]() |
Natknąłem się na tę bibliotekę jak sam googlowałem. Przykładowy kod z jej wykorzystaniem:
daje: Kod Fatal error</b>: Uncaught Ddeboer\Imap\Exception\InvalidSearchCriteriaException: Invalid search criteria [BODY "contents"] imap_alerts (0): imap_errors (1): - [SERVERBUG] BUG: Unknown internal error (0.003 + 0.000 + 0.002 secs). in /var/www/html/vendor/ddeboer/imap/src/Mailbox.php:139 Stack trace: #0 /var/www/html/ndex.php(26): Ddeboer\Imap\Mailbox->getMessages() #1 {main} thrown in <b>/var/www/html/src/Mailbox.php</b> on line <b>139</b><br /> i tak się zastanawiam, czy ten błąd " Invalid search criteria" wywala serwer Onetu czy gdzieś coś pod spodem na moim serwerze Googluję dalej i natknąłem się na tę stronę mówiącą, że PHP korzysta z funkcji wyszukiwania z IMAP2. Tymczasem jak odezwiemy się telnetem do serwera pocztowego Onetu mówi on nam, ze komunikuje się z nami za pomocą IMAP w wersji czwartej: Kod telnet imap.poczta.onet.pl 143
Trying 213.180.147.154... Connected to imap.poczta.onet.pl. Escape character is '^]'. * OK [CAPABILITY IMAP4rev1 SASL-IR LOGIN-REFERRALS ID LITERAL+ STARTTLS AUTH=PLAIN AUTH=LOGIN AUTH=XOAUTH2] Onet server ready. * BYE Disconnected for inactivity. Connection closed by foreign host Ten post edytował DNMX 12.03.2023, 19:01:22 |
|
|
![]()
Post
#8
|
|
![]() Grupa: Zarejestrowani Postów: 395 Pomógł: 71 Dołączył: 15.07.2014 Ostrzeżenie: (0%) ![]() ![]() |
Najlepiej, to odpalić xdebuga i przejść krok po kroku co się dzieje pod spodem.
Błąd dotyczy linii 139, ale sam Exception jest dopiero w linii 157... https://github.com/ddeboer/imap/blob/master...ailbox.php#L155 Ten post edytował Salvation 12.03.2023, 19:24:52 |
|
|
![]()
Post
#9
|
|
Grupa: Zarejestrowani Postów: 130 Pomógł: 0 Dołączył: 18.09.2021 Ostrzeżenie: (0%) ![]() ![]() |
Pogadałem sobie z Onetem przez telnet i w taki sposób też nie udało mi się przeszukać skrzynki. Postanowiłem podejśc do zagadnienia inaczej. Szukam na moim koncie dwóch interesujacych mnie skrzynek pocztowych - Społeczności i odebrane (INBOX). Pobieram 50 najnoszywch wiadomosci i sprawdzam, czy wśród nich jest coś od Allegro. Stworzyłem taki kod:
W odpowiedzi dostaję coś takiego: https://pastebin.com/raw/UNzgVq6k Tylko nie mam pojecia jak się proszuać po takim objekcie żeby wydobyć wszystkie ID wiadomości, posortować je od najwyższego i wydobyć 50 największych (konkretnie chodzi mi o numerki 1187, 1186 .. 1040 dla INBOX i analogicznie 587 ... 533 dla Społeczności. Próbowałem foreacha na $messages ale nie działa |
|
|
![]()
Post
#10
|
|
Grupa: Zarejestrowani Postów: 623 Pomógł: 144 Dołączył: 22.12.2010 Ostrzeżenie: (0%) ![]() ![]() |
Cytat Tylko nie mam pojecia jak się proszuać po takim objekcie Ta klasa z tego co widze robi extends po \ArrayIterator więc powinno się dać go ogarniać jak array iteratora, https://github.com/ddeboer/imap/blob/master...ageIterator.php https://www.php.net/manual/en/class.arrayiterator.php |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 4.05.2025 - 08:42 |