[php] Odbieranie poczty

Języki, których efekty są wykonywane po stronie serwera. PHP, ASP czy CGI w połączeniu z bazami danych SQL dają niezwykłe możliwości budowy i zarządzania stron WWW. Tu zadajemy pytania oraz demonstrujemy kod, z którym mamy problem.
Juby
Posty: 2
Rejestracja: czw gru 25, 2003 1:36 pm

[php] Odbieranie poczty

Post autor: Juby »

Widziałem pełno skryptów do wysyłania poczty, ale nie wiem czy istnieje mozliwość odbierania poczty za pomocą PHP??
Dziekuje z góry za odpowiedz.
wixor
Przelotem
Przelotem
Posty: 336
Rejestracja: śr gru 31, 2003 10:18 pm
Lokalizacja: Wrocław

Re: [php] Odbieranie poczty

Post autor: wixor »

Problem jest dość złożony więc nie będę podawał gotowego kodu, pozostawiam Ci to do implementacji. Odbieranie poczny jest realizowane za pomocą protokołu POP3 i jak się zapewne domyślasz, odebranie poczty wymaga znajomości owego protokołu. Osobiście polecam skorzysanie z jakiegokolwiej sniffera i podglądnięcie, co wysyła np. Outlook Express. Jeżeli jednak nie masz możliwości użycia sniffera podam Ci tutaj moje obserwacje:

+OK
USER {...}
+OK user ok
PASS {...}
+OK you have (n) messages ((n) octets)
STAT
+OK (n) (n)
RETR (n)
{...}
DELE (n)
+OK
QUIT
+OK bye bye


To jest w uproszczeniu protokół POP3. Serwer odpowiada poprzez: +OK lub -ERR i dlatego wystarczy sprawdzać pierwszy bajt odpowiedzi. Po zgłoszeniu się serwera wysyłana jest nazwa użytkownika, następnie (po potwierdzeniu), hasło. Jeżeli dane zostaną przyjęte, serwer odpowiada przez +OK. Wtedy, wysyłasz polecenie STAT. Serwer zwraca najpierw ilość wiadomości, następnie ilość oktetów. (chyba w takiej kolejności, nie pamiętam). Wtedy wysyłasz polecenie RETR podając jako argument numer wiadomości, serwer zwraca wiadomości (zakończone kropką w pustej linii), które Ty usuwasz. UWAGA:wiadomości są fizycznie usuwane dopiero po zakończeniu sesji, więc za każdym razem pytasz się o następną wiadmość:
RETR 1
{...}
DELE 1
{...}
RETR 2
{...}
itd.

Po załatwieniu wszystkich wiadomości wysyłasz polecenie QUIT, serwer się żegna i zrywa połączenie.

Dobrze, to był wstęp.... Teraz do PHP. Po pierwsze, przejrzyj dokumentację PHP oznaczoną jako Socket functions. Ja podam tylko ważniejsze funkcje, które będą Ci potrzebne:
- socket_create
- socket_connect
- socket_read
- socket_write
- socket_close
Mam nadzieję, że niczego nie pominąłem. Jeżeli nic nie mówią Ci te nazwy, polecam lekturę solidnego tomu o protokołach TCP/IP. Mam nadzieję, że moja odpowiedź rozjaśni Ci kwestię odbierania poczty.

-----------
PS.
Nie zapomnij wbudować w program obsługi błędów!
ex
Przelotem
Przelotem
Posty: 223
Rejestracja: sob sie 02, 2003 12:25 pm
Kontakt:

Re: [php] Odbieranie poczty

Post autor: ex »

http://webcity.php.pl/webcity/

poszukaj w artykułach, tam jest m.in. tutorial jak zrobić klienta poczty w php.
Krzysztof Aszkiełowicz
Zaczyna działać
Zaczyna działać
Posty: 458
Rejestracja: pn maja 26, 2003 9:29 pm
Lokalizacja: Warszawa
Kontakt:

Re: [php] Odbieranie poczty

Post autor: Krzysztof Aszkiełowicz »

wixor pisze:Problem jest dość złożony więc nie będę podawał gotowego kodu, pozostawiam Ci to do implementacji. Odbieranie poczny jest realizowane za pomocą protokołu POP3 i jak się zapewne domyślasz, odebranie poczty wymaga znajomości owego protokołu.
Niekoniecznie POP3. PHP posiada funkcje obsługi poczty. Obsługuje taki protokół jak np. IMAP i posiada funkcje do odbioru poczty.

Musisz poszukać w manualu, bo nie przeglądałem dokładnie tych funkcji.
ex
Przelotem
Przelotem
Posty: 223
Rejestracja: sob sie 02, 2003 12:25 pm
Kontakt:

Re: [php] Odbieranie poczty

Post autor: ex »

ODPOWIEDZ