Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [phpbb+php] Wysylanie mejli +SMTP (Pomocy)
swaper
post 13.09.2004, 11:09:12
Post #1





Grupa: Zarejestrowani
Postów: 11
Pomógł: 0
Dołączył: 13.09.2004

Ostrzeżenie: (0%)
-----


Witam
Poszukuje skryptu do wysylania mejli bez uzycia funkcji mail(). Znalazlem cos takiego na innym forumi http://www.forum.kasart98.com/viewtopic.php?t=188 Wszystko byloby spoko tylko ze cos nie chce chodzic a ja za bardzo niewiem dlaczego. Wlasnie dokladnie zainstalowalem forum phpbb i tam tez mialem taki problem bo pracuje na lokalu i jest serwer smtp z uwierzytelnianiem no i wlasnie wysylanie mejli z phpbb chodzi tylko jak wpisuje usera i haslo dlatego z standardowej funkcji mail() nie moge skorzystac (chyba ze jest jakis sposob o ktorym niewiem). W kazdym razie zamieszczam kod tej mojej funkcji do wysylanie mejli (jest to przerobione z phpbb). Jezeli ktos mialby chwile i zerknal gdzie robie blad to bym byl bardzo wdzieczny zaznaczam ze jestem poczatkujacy w php... Funkcja ta ma wysylac mejla pod okreslony adres na dzien przed data dzisiejsza. Tylko wlasnie mejl nie chce sie wysylac.
Kod
function wyslij()
{
    $polacz =  mysql_connect('localhost','user', 'password')
   or die ('Nie mozna się połączyć: ' . mysql_error());
    $nazwa_bazy = "baza";
    mysql_select_db($nazwa_bazy);
    $sql = "SELECT post_extra5  FROM phpbb_2posts_text";
    $result = mysql_query($sql);
    
    $dzisiaj = date("Y-m-d");
    $data =  strtotime ("2004-10-01");    
    echo ("$data <br>");
    $data1 =  strtotime ("2004-09-30");    
    echo ("$data1 <br>");
    
     if ($result)
         {
     while ($row = mysql_fetch_row($result))
     {
     if ($row[0] != NULL)
     {
     $data_wpr =  strtotime ("$row[0]");
     $data_dzis =  strtotime ("$dzisiaj");
     echo "$data_wpr <br>";
     echo "$data_dzis <br>";
      
     $wynik = $data_wpr - $data_dzis;    
     echo "Wynik: $wynik <br>";
    
     if ( $wynik > 0 && $wynik <= 86400)
     {
     echo "poszlo<br> ";
     //mail("dadada@poczta.onet.pl","Przypomnienie","Masz kontakt jutro :");           //funkcja do wysylania mejli
     $smtp_host = "192.168.2.1";
     $smtp_username = "user";
     $smtp_password = "password";
     $email = "adadad@poczta.fm";
    
     $mail_to = "dadada@poczta.onet.pl";
     $subject = "Forum";
     $message = "Poszlo";
    
    /*Funkcja do wysylania mejli*/
     function smtpmail($mail_to, $subject, $message)
     {
      global $smtp_host, $smtp_username, $smtp_password, $email;
    
     $message = preg_replace("/(?<!\r)\n/si", "\r\n", $message);
          
     if($mail_to == "")
     {
     echo "Blad: nie podales adresu odbiorcy!<br>\n";
     return 0;
     }
          
     if(trim($subject) == "")
     {
     echo "Blad: nie podales tematu wiadomosci!<br>\n";
     return 0;
     }
          
     if(trim($message) == "")
     {
     echo "Blad: Wiadomosc jest pusta!<br>\n";
     return 0;
     }
    
     $mail_to_array = explode(",", $mail_to);
    
     if( !$socket = fsockopen($smtp_host, 25, $errno, $errstr, 20))
     {
     echo "Nie moge polaczyc z serwerem SMTP! : $errno : $errstr<BR>\n";
     }
     server_parse($socket, "220");
          
     if( !empty($smtp_username) && !empty($smtp_password))
     {
    fputs($socket, "HELO " . $smtp_host . "\r\n");       server_parse($socket, "250");            
    fputs($socket, "AUTH LOGIN\r\n");         server_parse($socket, "334");      fputs($socket, base64_encode($smtp_username) . "\r\n");
    server_parse($socket, "334");
               fputs($socket, base64_encode($smtp_password) . "\r\n");
    server_parse($socket, "235");     
    }
     else
     {
  fputs($socket, "HELO " . $smtp_host . "\r\n");      server_parse($socket, "250");  
     }
      
  fputs($socket, "MAIL FROM: <" . $email . ">\r\n");
  server_parse($socket, "250");  
                      
  //wysylamy adresy odbiorcow naszej wiadomosci
  $to_header = "To: ";
  @reset($mail_to_array);
  while(list( , $mail_to_address) = each( $mail_to_array))
  {
  $mail_to_address = trim($mail_to_address);
  if (preg_match('/[^ ]+\@[^ ]+/', $mail_to_address))
  {
  fputs( $socket, "RCPT TO: <$mail_to_address>\r\n" );
  server_parse( $socket, "250" );
  }
  $to_header.=(($mail_to_address!='') ? ', ' : '')."<$mail_to_address>";
  }
          
  //wysylamy cala reszte
  fputs($socket, "DATA\r\n");
  server_parse($socket, "354");
  fputs($socket, "Subject: $subject\r\n");
  fputs($socket, "$to_header\r\n");
  fputs($socket, "$headers\r\n\r\n");
  fputs($socket, "$message\r\n");
  fputs($socket, ".\r\n");
  server_parse($socket, "250");
  fputs($socket, "QUIT\r\n");
  fclose($socket);
  //mail zostal wyslany
  return TRUE;
  }
  function server_parse($socket, $response)
  {
  while (substr($server_response,3,1)!= ' ')
  {
   if(!($server_response=fgets($socket, 256)))
  {
  die("Couln't get server response codes");
  }
  }
  if(!(substr($server_response, 0, 3)==$response))
  {
  die("Ran into problems sending Mail: $server_response");
  }
        
  }
  $mailto = "dadada@poczta.onet.pl";
  $subject = "Forum";
  $message = "Poszlo";
  if (smtpmail($mailto,$subject,$message))        
  {
  echo "Wiadomosc zostala wyslana";
  }        
  else
  {
  echo "Wiadomosc nie zostala wyslana";
  }
  }
  else
   {
  echo "nie poszlo <br>";
   }
  }
  else {}    
  }    
  }    
      
  //    mail("adres","temat","tresc","From: adres");
    
    
    mysql_close($polacz);
    

}
wyslij();
?>


Funkcja ta ma wysylac mejla pod okreslony adres na dzien przed data dzisiejsza. To chodzi (dzieki za pomoc kess), tylko wlasnie mejl nie chce sie wysylac. I neiwiem why? Po odpaleniu skryptu pokazuje sie cos takiego:

Cytat
1096581600
1096495200
943916400
1095026400
Wynik: -151110000
nie poszlo
1095112800
1095026400
Wynik: 86400
poszlo
Nie moge polaczyc z serwerem SMTP! : 0 :
Warning: Supplied argument is not a valid File-Handle resource in /var/www/skrypty/data.php on line 126
Couln't get server response codes


Sorki ze taki dlugi kod zamieszczam ale widzialem dluzsze smile.gif. Z gory dzieki za kazda pomoc jakby ktos mial chwile i zerknal to bym byl bardzo wdzieczny.

Pozdro Swaper
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 16.04.2024 - 08:06