Dawien dawno już nic nie pisałem z powodu braku czasu na PHP, więc czas najwyższy coś sklepać jeśli jest okazja i problem do rozwiązania.
Na początek powiem że od kilku dni siedzę i grzebie na forum i w google aby coś wyłapać z tego, ale nic.
Znalazłem kilka opcji np. mailx który jest dla Unixa, więc odpada, i niestety nic nie sprawdza się w moim przypadku. Aczkolwiek nie twierdzę że wchłonąłem wszystko co tam leży - czasami pod latarnią najciemniej

Do rzeczy ...
Mam własny serwer na Winde: XAMPP 1.7.3 => PHP5.3 + MySQL5.1 + Mercury4.7
Winda musi być bo jest kilka aplikacji (np. centrala tel.) które pod linuxem chodzić nie mogą.
XAMPP działa szybko, stabilnie. (Muszę tylko go zaktualizować do 1.7.4)
Na serwerku chodzi mały CRM do wewnętrznego obrotu danymi + kilka małych dodatków.
Wyjaśnienie ...
Aktualnie piszę moduł do CRMa który ma za zadanie sprawdzanie czasu reakcji (odpowiedzi na maila).
Np.
Klient wysyła maila, odbieramy go o godz. 10:32:56 [hh:mm:ss]
Odpowiadamy na maila o: 10:35:34 [hh:mm:ss]
Czyli uzyskujemy czas odpowiedzi: 2 minuty 38 sekund
W oparciu o te dane mają być tworzone wykresy i statystyki do raportów dla klienta.
Kod odpowiedzialny za sprawdzanie skrzynki wygląda tak:
$imap_user = "login@host.pl"; $imap_pass = "haselko3"; $imap_server = "{host.pl:993/ssl/novalidate-cert}"; $mbox = imap_open({$imap_server}INBOX, $imap_user, $imap_pass); $check = imap_mailboxmsginfo($mbox); $original_order = $mbox; $sorted_mbox = imap_sort($mbox, SORTARRIVAL, 1); // posortowana poczta od najnowszych $totalrows = imap_num_msg($mbox); $i=0; for($m=0; $m<$totalrows; $m++) { if($header = imap_headerinfo($mbox, $sorted_mbox[$m])) { $from = $header->from; { { $fromName = $from[0]->personal; $fromAddress = $from[0]->mailbox . "@" . $from[0]->host; } } $headerFrom = (!$fromName ? $fromAddress : $fromName.' ('.$fromAddress.')'); if($header->Deleted == " ") // Pokazujemy tylko faktycznie istniejace - czasami na serwie jakies smieci zostaja { $i++; if($i>1) $i=0; } } } imap_close($mbox);
Prosto, zwięźle i na temat. (jeśli coś można poprawić, sugestie mile widziane

PROBLEM:
Jak powątkować pocztę, czyli powiązać otrzymaną z wysłaną?
Już robiłem ...
Funkcja imap_headerinfo daje spore możliwości ale akurat nie ma tej która by mi pomogła, a przynajmniej takiej nie znalazłem.
Opcje z tej funkcji typu in_reply_to, message_id, references już testowałem ale nie zawsze posiadają wpis i nie można się przez nie odwołać do powiązanego maila.
Flagi mi nie pomagają bo nie posiadają żadnych dat (chyba że coś mi umyka).
Sprawdzałem i porównywałem różne dane z obu skrzynek (odbiorcza i wysłane) i nie znalazłem żadnego wspólnego mianownika, którym mógłbym połączyć wiadomości.
Próbowałem oprzeć system o wykorzystanie aliasu dla maila który jest sprawdzany, ale to "walka z wiatrakami".
Myślałem o sprawdzaniu konkretnych odbiorców i czasów dostarczania w skrzynkach ale to niewypał.
Klientów jest ogólnie 2, ale nie możemy uzależniać systemu od 1 czy kilku adresów mailowych i np. 2 domen, trzeba założyć że klient będąc na urlopie napisze maila z innego adresu i już ZONK.
Nie chciałbym ... na pewno robić własnego klienta poczty bo zależy mi tylko na części korespondencji a nie całej. No chyba że to będzie tylko i TOTALNIE jedyne rozwiązanie (można zapisywać pocztę wychodzącą do bazy z czasem i analizować wszystko szczegółowo) ale wolałbym znaleźć inne rozwiązanie jeśli to możliwe ...
Zastanawiałem się nad wykorzystaniem Mercury'ego z pakietu XAMPP, tak aby za pomocą jego odbierać i wysyłać pocztę, ale nie wiem czy to by do mojego CRMa można by to wykorzystać.
Nie chcę tracić czasu na próby które mogą nie przynieść dobrego rezultatu.
No i takim sposobem wylądowałem tu postując

Wielkie dzięki z góry za wszelką pomoc.
PS. Mile widziane również inne rady jeśli chodzi o IMAP'a, wiedzy nigdy za wiele

Widzę że na ciężkie (względnie) tematy to tłumy się rzucają

W każdym razie problem po wielogodzinnej walce 2 dni później został rozwiązany.
Jak się okazało wszystko jest w manualu, a zmęczenie materiału (tj. mnie) stwarza czasami problemy w doglądaniu szczegółów.
W IMAP'ie w manualu występuje taka funkcja jak imap_thread która przy odpowiednim zastosowaniu spełnia wszystkie moje wymagania ...
Może się to komuś przyda.
Temat do zamknięcia.