Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: problem z wysylanie maili aktywacyjnych
Forum PHP.pl > Forum > PHP
Pabblo
Witam jestem w posiadaniu pewnego skryptu do rejestracji. Niestety mimo licznych prob nie udalo mi sie go skonfgurowac tak by wysylal na maila (podanego przez uzytkownika) haslo potrzebne do aktywacji konta. Pojawia sie taki komunikat:

GENERAL ERROR: Could not connect to smtp host : 0 : php_network_getaddresses: getaddrinfo failed: Name or service not known 120 /home/vol8/byethost18.com/b18_3225274/htdocs/bin/qt_lib_smtp.php

Ponizej zamieszcze kod pliku do ktorego donosi sie ow blad. Bardzo bym prosil o pomoc, moze moglby ktos zerknac co jest w tym kodzie nie tak ew. pomogl mi go poprawnie skonfigurowac tz. gdzie przypisac na slale ustawienia serwera poczty hosta itp. Za pomoc z gory dziekuje.

Zawartosc pliku qt_lib_smtp.php :

Kod
<?php

/* ============
 * qt_lib_smtp.php
 * ------------
 * version: 3.5 build:20090130
 * This is a library of public functions
 * ------------
 * QtfMail this format and send the mail with respect to the method (mail, or smtp)
 *
 * $strTo: destination
 * $strSubject: subject, (included after the team name)
 * $strMessage: the message body
 * From and Header (charset) are added
 *
 */

function QTmail($strTo,$strSubject,$strMessage,$strCharset='iso-8859-1')
{
   $strHeaders = 'Content-Type: text/plain; charset='.$strCharset;

   if ( $_SESSION[QT]['use_smtp']=='1' )
   {
   smtpmail($strTo,$strSubject,$strMessage,'From:'.$_SESSION[QT]['admin_email']."\r\n".$strHeaders);
   }
   else
   {
   mail($strTo,$strSubject,$strMessage,'From:'.$_SESSION[QT]['admin_email']."\r\n".$strHeaders);
   }
}

/*
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation; either version 2 of the License, or
 * (at your option) any later version.
 *
 */

function server_parse($socket, $response, $line = __LINE__)
{
  $server_response = '----';

  while (substr($server_response, 3, 1) != ' ')
  {
    if ( !($server_response = fgets($socket, 256)) ) die("GENERAL ERROR: Couldn't get mail server response codes $line". __FILE__);
  }

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

function smtpmail($mail_to, $subject, $message, $headers='')
{

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

  //
  $cc = '';
  $bcc = '';

  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 idn'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)=='' )
  {
    die("GENERAL ERROR: No email Subject specified ". __LINE__ ." ". __FILE__);
  }

  if ( trim($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($_SESSION[QT]['smtp_host'], 25, $errno, $errstr, 20) )
  {
    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($_SESSION[QT]['smtp_username']) && !empty($_SESSION[QT]['smtp_password']) )
  {
    fputs($socket, "EHLO " . $_SESSION[QT]['smtp_host'] . "\r\n");
    server_parse($socket, "250", __LINE__);

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

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

    fputs($socket, base64_encode($_SESSION[QT]['smtp_password']) . "\r\n");
    server_parse($socket, "235", __LINE__);
  }
  else
  {
    fputs($socket, "HELO " . $_SESSION[QT]['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: <" . $_SESSION[QT]['admin_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...
  fputs($socket, "Subject: $subject\r\n");

  // Now the To Header.
  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;
}

?>
piotrooo89
a masz poprawnie skonfigurowany serwer SMTP? albo inaczej, czy w ogóle masz możliwość wysyłania maili (serwer SMTP i odpowiednia opcja w PHP)?
Pabblo
tak parametry i hasla serwera sa wporzadku i wszytsko dziala (maile sa wysylane)  natomiast nie wiem jak polaczyc to z opisanym skryptem. Moze istnialaby mozliwosc wpisania ich jakos na stale do powyzszego kodu ?
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.