Poniżej zamieszczam funkcję do wysyłania wiadomości e-mail z autoryzacją. Nie powinno być problemów z jej użyciem, ale należy pamiętać o konieczności połączenia z serwerem w celu wysłania każdej wiadomości. Sprawdź proszę, czy da się zdefiniować kilku odbiorców. Jeśli nie, szybkość działania będzie niiiskaaa.
<?php
//funkcja
function wyslij($serwer,$uzytkownik,$haslo,$email,$do,$temat,$zawartosc)
{
//kodowanie w standardzie base64
//nawizanie połączenia z serwerem SMTP
//sprawdzanie dostępności serwera
$spr[0
] = fgets($polaczenie,1000
); //sekwencja:
//1. polecenie uytkownika - fputs
//2. odpowiedź serwera - fgets - idzie do zmiennej $spr do późniejszej analizy
//powitanie serwera
fputs($polaczenie,"HELO $ip\r\n"); $spr[1
] = fgets($polaczenie,1000
); //autoryzacja
fputs($polaczenie,"AUTH LOGIN\r\n"); $spr[2
] = fgets($polaczenie,1000
); fputs($polaczenie,$uzytkownik."\r\n"); $spr[3
] = fgets($polaczenie,1000
); fputs($polaczenie,$haslo."\r\n"); $spr[4
] = fgets($polaczenie,1000
); //polecenie wysyłki
fputs($polaczenie,"MAIL FROM: $email\r\n"); $spr[5
] = fgets($polaczenie,1000
); fputs($polaczenie,"RCPT TO: $do\r\n"); $spr[6
] = fgets($polaczenie,1000
); //wpisywanie treci i nagłówków�
fputs($polaczenie,"DATA\r\n"); $spr[7
] = fgets($polaczenie,1000
); fputs($polaczenie,"Subject: $temat\r\n"); fputs($polaczenie,"From: $email\r\n"); fputs($polaczenie,"To: $do\r\n"); fputs($polaczenie,"\r\n"); fputs($polaczenie,"$zawartosc\r\n"); fputs($polaczenie,".\r\n"); $spr[8
] = fgets($polaczenie,1000
); //koniec poczenia
fputs($polaczenie,"quit\r\n"); $spr[9
] = fgets($polaczenie,1000
); //analiza kodów odpowiedzi serwera SMTP za pomoc ereg
//i przypisanie zmiennej $wynik odpowiedniego komunikatu
$wynik = 0;
if (ereg('220',$spr[0
]) && ereg('250',$spr[1
]) && ereg('334',$spr[2
]) && ereg('334',$spr[3
]) && ereg('235',$spr[4
]) && ereg('250',$spr[5
]) && ereg('250',$spr[6
]) && ereg('354',$spr[7
]) && ereg('250',$spr[8
]) && ereg('221',$spr[9
])) {
$wynik = "Udało się wysłać wiadomość!";
}
else
{
$wynik = "Mamy tu jakiś błąd!";
}
return $wynik;
}
?>
string wyslij ( string $serwer, string $uzytkownik, string $haslo, string $email, string $do, string $temat, string $zawartosc );
Funkcja wysyła wiadomość o treści $zawartosc z adresu $email na serwerze $serwer do adresata określonego parametrem $do (musimy podać hasło do swojej skrzynki pocztowej jako trzeci parametr). Temat określamy jako parametr $temat. Funkcja korzysta z mechanizmu autoryzacji AUTH LOGIN, używanego na większości serwerów SMTP. Przykłady polskich serwerów SMTP to:
-smtp.wp.pl
-poczta.interia.pl
-poczta.o2.pl
Działający skrypt, który używa tej funkcji, można znaleźć pod adresem
http://slash-forum.com/SlashApps/MailerX. W razie potrzeby mogę komuś wyłożyć podstawy protokołu SMTP...