Jak wysłać e-mail korzystając z gniazd (socket) zamiast funkcji mail, PHP Skrypty


[PHP] Jak wysłać e-mail korzystając z gniazd (socket) zamiast funkcji mail()?

0x01 graphic

Chcesz wysłać list korzystając z gniazd w serwerze SMTP z pominięciem funkcji mail() dostępej w PHP.

0x01 graphic

Czasem nie można skorzystać z funkcji mail() do wysyłania poczty elektronicznej, więc jedynym rozwiązaniem jest połączenie się z serwerem SMTP i wysłanie poczty bezpośrednio przez ten serwer. Można to zrealizować wykorzystując gniazda, jak w przykładzie:

<?

function wyslij($serwer_smtp,$nadawca,$odbiorca,$tytul,$tresc_listu) {

$f = fsockopen($serwer_smtp, 25);

if ($f<=0) return 0;

fgets($f,1024);

fputs($f,"HELO $serwer_smtp\r\n");

fgets($f,1024);

fputs($f,"MAIL FROM: $nadawca\r\n");

fgets($f,1024);

fputs($f,"RCPT TO: $odbiorca\r\n");

fgets($f,1024);

fputs($f,"DATA\r\n");

fgets($f,1024);

fputs($f,"Subject: $tytul\r\n");

fputs($f,"To: $odbiorca\r\n");

fputs($f,"\r\n");

fputs($f,"$tresc_listu\r\n");

fputs($f,".\r\n");

fgets($f,1024);

fputs($f,"QUIT\r\n");

fclose($f);

}

$serwer_smtp="smtp.twojserwer.pl";

$nadawca="nadawca@serwer.pl";

$odbiorca="odbiorca@serwer.pl";

$tytul="Tytuł listu";

$tresc_listu=

"Dowolnie długa

treść naszego

listu...";

wyslij($serwer_smtp,$nadawca,$odbiorca,$tytul,$tresc_listu);

?>

Najważniejszą sprawą jest zdefiniowanie serwera SMTP, ponieważ nie może to być serwer przypadkowy. W zależności od tego u jakiego ISP masz konto lub trzymasz strony, taki serwer pocztowy musisz podać.

Oprócz serwera określ jeszcze adresy nadawcy i odbiorcy, tytuł listu i jego treść. Gdy wszystkie parametry są zadeklarowane poprawnie, wywołujemy funkcję wyslij().

Pobiera ona nasze dane i rozpoczyna połączenie z serwerem SMTP. Na początku otwiera połączenie z serwerem na porcie 25 (usługa SMTP pracuje na tym porcie), a następnie następuje faza wymiany informacji pomiędzy skryptem PHP i serwerem.

Za pomocą funkcji fputs() wysyłamy polecenia do serwera, a za pomocą fgets() pobieramy odpowiedzi. Możesz przed każdym fgets() wpisać polecenie echo aby zobaczyć co odpowiada serwer SMTP i ewentualnie zdiagnozować problem, jeżeli nie możesz wysłać listu:

echo fgets($f,1024);

Jeżeli wszystko przebiega zgodnie z planem witamy się z serwerem (HELO), podajemy adres nadawcy (MAIL FROM), odbiorcy (RCPT TO), następnie umieszczamy dodatkowe dane (DATA) gdzie wpisałem pole nagłówka Subject i To.

Gdy wystąpi pusta linijka, czyli podwójne \r\n można wpisać treść listu. List kończy się wpisaniem kropki w pustej linii, która od razu powoduje wysłanie listu. Teraz pozostało zakończyć pracę z serwerem (QUIT) i zamknąć połączenie.

Nie jest to może zbyt czytelne, ale właśnie tak przebiega komunikacja z serwerami SMTP. Modyfikując nagłówki można w ten sposób przesyłać także listy HTML i załączniki.



Wyszukiwarka

Podobne podstrony:
Jak wysłać mailem w formacie HTML zawartość tabeli z bazy danych, PHP Skrypty
Jak pokazać i skąd wziąć imieniny przypadające na aktualny dzień, PHP Skrypty
Jak stworzyć indeks pierwszych liter dla wybranej kolumny z tabeli, PHP Skrypty
jak pobrac zdalny plik na lokalny server raz dziennie, PHP Skrypty
Jak wypisać w tabeli zawartość pliku tekstowego z polami oddzielonymi separatorem, PHP Skrypty
jak zmienic liczby na kod BCD dinary coded decimal, PHP Skrypty
Jak uzyskać IP lub domenę z jakiej łączy się użytkownik, PHP Skrypty
Jak wykryć i pokazać liczbę osób oglądających aktualnie stronę WWW, PHP Skrypty
Jak sprawdzić czy w bazie danych istnieje aktualnie dodawana treść, PHP Skrypty
Jak zapisywać do pliku numery IP osób odwiedzających stronę, PHP Skrypty
Jak sprawdzić typy i atrybuty ustawione dla każdej z kolumn tabeli, PHP Skrypty
Jak sprawdzić czy zmienna przechowuje liczbę całkowitą lub rzeczywistą, PHP Skrypty
Jak stworzyć losowe porady wyświetlające się na stronie WWW, PHP Skrypty
Jak stworzyć koszyk zamówień do sklepu internetowego z wykorzystaniem cookies, PHP Skrypty
Jak stworzyć formularz do przesyłania informacji na podany email, PHP Skrypty
Jak pobrać i pokazać aktualne notowania średnich kursów walut z NBP, PHP Skrypty
Jak wysłać ze strony WWW e-mail z dowolnym załącznikiem, PHP Skrypty
Jak wysłać ze strony WWW e-mail z dowolnym załącznikiem, PHP Skrypty
Bandler R Umysł, jak z niego wreszcie korzystać (2)

więcej podobnych podstron