[phpbb+php] Wysylanie mejli +SMTP (Pomocy) |
[phpbb+php] Wysylanie mejli +SMTP (Pomocy) |
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 . Z gory dzieki za kazda pomoc jakby ktos mial chwile i zerknal to bym byl bardzo wdzieczny. Pozdro Swaper |
|
|
Wersja Lo-Fi | Aktualny czas: 27.04.2024 - 17:46 |