Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Błąd: Warning: mail()
Forum PHP.pl > Forum > Przedszkole
Rafal_new_PHP
Błąd: Warning: mail() [function.mail]: Failed to connect to mailserver at "localhost" port 25, verify your "SMTP" and "smtp_port" setting in php.ini or use ini_set() in C:\wamp\www\serwis\zapomnialem_haslo.php on line 8

Problem: Znalazłem skrypt który pozwala wysyłać wiadomość e-mail bez konfiguracji php.ini. Błędem jest złe podpięcie skryptu. Koliduje to z funkcją mail() moze ktos z was wie jak to przerobić. Czy dać to w jednym pliku php czy po prostu na koncu wywolac funkcje mail($adresdo,$temat,$zawartosc,$adresod); Prosze o pomoc.

SKRYPT

Kod


[b]<?php
$login=$_POST['login'];
$mail=$_POST['mail'];
$zawrtosc='Twoje haslo to:';
[email="$adresod="]$adresod='simman@o2.pl'[/email];
$temat='Hasło które zapomniałeś';
[email="$adresdo="]$adresdo='simman@o2.pl'[/email];
mail($adresdo,$temat,$zawartosc,$adresod);
?> [/b]

[b]
<?php
$board_config['smtp_host']="poczta.o2.pl";
$board_config['smtp_username']="simman";
$board_config['smtp_password']="moje_haslo";
$board_config['board_email']="[email="simman@o2.pl"]simman@o2.pl[/email]";

function server_parse($socket, $response, $line = __LINE__)
{
while (substr($server_response, 3, 1) != ' ')
{
  if (!($server_response = fgets($socket, 256)))
  {
   message_die(GENERAL_ERROR, "Couldn't get mail server response codes", "", $line, __FILE__);
  }
}

if (!(substr($server_response, 0, 3) == $response))
{
  message_die(GENERAL_ERROR, "Ran into problems sending Mail. Response: $server_response", "", $line, __FILE__);
}
}

// Replacement or substitute for PHP's mail command
function smtpmail($mail_to, $subject, $message, $headers = '')
{
global $board_config;

// Fix any bare linefeeds in the message to make it RFC821 Compliant.
$message = preg_replace("#(?<!\r)\n#si", "\r\n", $message);

if ($headers != '')
{
  if (is_array($headers))
  {
   if (sizeof($headers) > 1)
   {
    $headers = join("\n", $headers);
   }
   else
   {
    $headers = $headers[0];
   }
  }
  $headers = chop($headers);

  // Make sure there are no bare linefeeds in the headers
  $headers = preg_replace('#(?<!\r)\n#si', "\r\n", $headers);

  // Ok this is rather confusing all things considered,
  // but we have to grab bcc and cc headers and treat them differently
  // Something we really didn't take into consideration originally
  $header_array = explode("\r\n", $headers);
  @reset($header_array);

  $headers = '';
  while(list(, $header) = each($header_array))
  {
   if (preg_match('#^cc:#si', $header))
   {
    $cc = preg_replace('#^cc:(.*)#si', '\1', $header);
   }
   else if (preg_match('#^bcc:#si', $header))
   {
    $bcc = preg_replace('#^bcc:(.*)#si', '\1', $header);
    $header = '';
   }
   $headers .= ($header != '') ? $header . "\r\n" : '';
  }

  $headers = chop($headers);
  $cc = explode(', ', $cc);
  $bcc = explode(', ', $bcc);
}

if (trim($subject) == '')
{
  message_die(GENERAL_ERROR, "No email Subject specified", "", __LINE__, __FILE__);
}

if (trim($message) == '')
{
  message_die(GENERAL_ERROR, "Email message was blank", "", __LINE__, __FILE__);
}

// Ok we have error checked as much as we can to this point let's get on
// it already.
if( !$socket = fsockopen($board_config['smtp_host'], 25, $errno, $errstr, 20) )
{
  message_die(GENERAL_ERROR, "Could not connect to smtp host : $errno : $errstr", "", __LINE__, __FILE__);
}

// Wait for reply
server_parse($socket, "220", __LINE__);

// Do we want to use AUTH?, send RFC2554 EHLO, else send RFC821 HELO
// This improved as provided by SirSir to accomodate
if( !empty($board_config['smtp_username']) && !empty($board_config['smtp_password']) )
{
  fputs($socket, "EHLO " . $board_config['smtp_host'] . "\r\n");
  server_parse($socket, "250", __LINE__);

  fputs($socket, "AUTH LOGIN\r\n");
  server_parse($socket, "334", __LINE__);

  fputs($socket, base64_encode($board_config['smtp_username']) . "\r\n");
  server_parse($socket, "334", __LINE__);

  fputs($socket, base64_encode($board_config['smtp_password']) . "\r\n");
  server_parse($socket, "235", __LINE__);
}
else
{
  fputs($socket, "HELO " . $board_config['smtp_host'] . "\r\n");
  server_parse($socket, "250", __LINE__);
}

// From this point onward most server response codes should be 250
// Specify who the mail is from....
fputs($socket, "MAIL FROM: <" . $board_config['board_email'] . ">\r\n");
server_parse($socket, "250", __LINE__);

// Specify each user to send to and build to header.
$to_header = '';

// Add an additional bit of error checking to the To field.
$mail_to = (trim($mail_to) == '') ? 'Undisclosed-recipients:;' : trim($mail_to);
if (preg_match('#[^ ]+\@[^ ]+#', $mail_to))
{
  fputs($socket, "RCPT TO: <$mail_to>\r\n");
  server_parse($socket, "250", __LINE__);
}

// Ok now do the CC and BCC fields...
@reset($bcc);
while(list(, $bcc_address) = each($bcc))
{
  // Add an additional bit of error checking to bcc header...
  $bcc_address = trim($bcc_address);
  if (preg_match('#[^ ]+\@[^ ]+#', $bcc_address))
  {
   fputs($socket, "RCPT TO: <$bcc_address>\r\n");
   server_parse($socket, "250", __LINE__);
  }
}

@reset($cc);
while(list(, $cc_address) = each($cc))
{
  // Add an additional bit of error checking to cc header
  $cc_address = trim($cc_address);
  if (preg_match('#[^ ]+\@[^ ]+#', $cc_address))
  {
   fputs($socket, "RCPT TO: <$cc_address>\r\n");
   server_parse($socket, "250", __LINE__);
  }
}

// Ok now we tell the server we are ready to start sending data
fputs($socket, "DATA\r\n");

// This is the last response code we look for until the end of the message.
server_parse($socket, "354", __LINE__);

// Send the Subject Line...
if (!eregi ('Subject:',$subject)) fputs($socket, "Subject: $subject\r\n");

// Now the To Header.
if (!eregi ('To:',$headers)) fputs($socket, "To: $mail_to\r\n");

// Now any custom headers....
fputs($socket, "$headers\r\n\r\n");

// Ok now we are ready for the message...
fputs($socket, "$message\r\n");

// Ok the all the ingredients are mixed in let's cook this puppy...
fputs($socket, ".\r\n");
server_parse($socket, "250", __LINE__);

// Now tell the server we are done and close the socket...
fputs($socket, "QUIT\r\n");
fclose($socket);

return TRUE;
}

?>

[/b]


Cienki1980
Zakładam, że uruchamiasz ten skrypt na lokalnym serwerze gdzie nie masz zainstalowanego serwera poczty mail. I tyle.
Rafal_new_PHP
Dobrze zakładasz. Uwazam ze rozwiazanie tego problemu za pomoca podania SMTP przyda sie wielu uytkowniką. Jestem pewien ze znow gdzies zrobilem literowke bo jeden blad. Nie musze miec nic skonfigurowane tylko ten skrypt podlancza mi pod moja poczte. Mowilem nie chce zmieniac php.ini. Chce zeby ten skrypt laczyl sie z moja poczta i z tamtad wysylal. Tak tez dziala wiem bo widzialem. Jednak nie wiem jak zastosowac. Dlatego prosze o pomoc bo nie wiem gdzie jest blad

Pomoze ktos? Ktos wie jak?
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.