
[php:1:661b6062cb]<?php
$smtp_host = 'smtp.wp.pl'; // Adres smtp np. smtp.wp.pl
$smtp_user = 'cudik'; // Użytkownik serwera smtp
$smtp_pass = '*****'; // Hasło
$email = 'cudik@wp.pl'; // Adres od którego przychodzą maile
/* Funkcja do wysyłania maili bez użycia funkcji mail(), znaleziona w forum phpBB... */
function smtp_mail($mail_to, $subject, $message) {
global $smtp_host, $smtp_user, $smtp_pass, $email;
if($mail_to == '')
$error = 'Nie podałeś adresu odbiorcy!';
if(trim($subject) == '')
$error = 'Nie podałeś tematu wiadomości!';
if(trim($message) == '')
$error = 'Wiadomość jest pusta!';
if(!$socket = pfsockopen($smtp_host, 25, $errno, $errstr, 20))
$error = 'Nie mogę się połączyć z serwerem SMTP!';
if(!empty($error)){
echo "<B>Błąd: </B>$error<BR>n";
return false;
}
server_parse($socket, '220');
if(!empty($smtp_user) && !empty($smtp_pass)){
fputs($socket, 'EHLO '.$smtp_host."rn");
server_parse($socket, '250');
fputs($socket, "AUTH LOGINrn");
server_parse($socket, '334');
fputs($socket, base64_encode($smtp_user)."rn");
server_parse($socket, '334');
fputs($socket, base64_encode($smtp_pass)."rn");
server_parse($socket, '235');
}
else{
fputs($socket, 'HELO '.$smtp_host."rn");
server_parse($socket, '250');
}
fputs($socket, 'MAIL FROM: <' . $email . ">rn");
server_parse($socket, '250');
$mail_to_array = explode(',', $mail_to);
$to_header = 'To: ';
@reset($mail_to_array);
foreach($mail_to_array as $mail_to_address){
$mail_to_address = trim($mail_to_address);
if (preg_match('/[^ ]+@[^ ]+/', $mail_to_address)) {
fputs( $socket, "RCPT TO: <$mail_to_address>rn" );
server_parse($socket, '250');
}
$to_header .= (($mail_to_address != '') ? ', ' : '')."<$mail_to_address>";
}
$message = preg_replace("/(?<!r)n/si", "rn", $message);
fputs($socket, "DATArn");
server_parse($socket, "354");
fputs($socket, "Subject: $subjectrn");
fputs($socket, "$to_headerrn");
fputs($socket, "$headersrnrn");
fputs($socket, "$messagern");
fputs($socket, ".rn");
server_parse($socket, '250');
fputs($socket, "QUITrn");
fclose($socket);
return true;
}
function server_parse($socket, $response) {
while (substr($server_response,3,1)!=' ') {
if(!($server_response=fgets($socket, 256))) {
die('Nie mogę pobrać kodów zwróconych przez serwer.');
}
}
if(!(substr($server_response, 0, 3) == $response)) {
die('Wystąpił problem z wysyłaniem maili. Serwer zwrócił komunikat: '.$server_response);
}
}
?>[/php:1:661b6062cb]
Tak jak powiedziałem, maile sie ślą, ale z pustym polem od. Autoryzacja działa, bo jeśli wpisze niepoprawne hasło to serwer smtp zwraca odpowiedni komunikat. Wie ktoś dlaczego to pole może być puste ?