Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php] problem z mail()...
Forum PHP.pl > Forum > PHP
!!_:!SnAkE!:_!!
Witam. Nie wiem co juz mam zrobic. Probowalem wszystkiego - nadaremnie. Mam krasnala, chcialem napisac skrypt wysylajacy maile do uzytkownikow ktorych adresy mail mam w bazie danych.
W czym problem. W momencie w ktorym w skrypcie pojawia sie slowo mail(...),
skrypt wykonuje sie 20 minut i i tak nic z tego nie wynika.

  1. <?php
  2.  
  3. mail('snake_one@wp.pl', 'bla', 'bla bla bla');
  4.  
  5. ?>


Czasami sie zdazy, ze skrypt pzrejdzie od razu i mail sie wysle, ale to zachodzi mniej wiecej raz na 50 odpalen. Nie mam pojecia w czym jest problem.
Probowalem jeszcze tak:

  1. <?php
  2.  
  3. while($wiersz=mysql_fetch_array($wynik)){ //wynik pobrania emaili z bazy
  4.  $mail[].=$wiersz['Email'];
  5.  }
  6. $adresy=implode(', ' , $mail);
  7. mail($adresy, 'jol', 'test');
  8.  
  9. ?>


Tez to samo. Probowalem rowniez w petli wysylac maile osobono do kazdego uzytkownika - to samo. Bardzo prosze o pomoc, jet mi to niezbedne a 2 dni walki z tym przyprawiaja mnie o bol glowy. Nie mam pojecia czemu skrypt sie nie chce wykonywac. Zielony pasek na pasku statusu pzregladarki sie zapelnia, ale tepem jednej kreski na 5 minut. Bardzo serdecznie prosilbym o pomoc, z gory dziekuje i pozdrawiam wszystkich ludzi dobrej woli.
GrayHat
a masz poprawnie skonfigurowany mailserver?
!!_:!SnAkE!:_!!
Nie mam zielonego pojecia.Prosilbym o jakies konkretniejse instrukcje smile.gif


//edit:

Doszedlem juz co jest grane. Pozmienialem troszke w konfiguracjie krasnala. Jest lepiej, ale dalej nie o to chodzi. Mianowicie maile wysyla mi tylko na skrzynki wp.pl...

W konfiguracji krasnala wybrałem smtp.wp.pl...

blad ktory wywala wyglada tak:
Kod
Warning: mail() [function.mail]: SMTP server response: 553 SMTP auth required (#5.7.1) / Wymagana autoryzacja SMTP - zobacz strone: http://poczta.wp.pl/autoryzacja in c:\usr\krasnal\www\Projekt\formularze\mail.php on line 19


Nie mam pojecia o co chodzi z ta autoryzacja... Bardzo bym prosil kogos obeznanego w temacie o pomoc...
slash12345
Poniżej zamieszczam funkcję do wysyłania wiadomości e-mail z autoryzacją. Nie powinno być problemów z jej użyciem, ale należy pamiętać o konieczności połączenia z serwerem w celu wysłania każdej wiadomości. Sprawdź proszę, czy da się zdefiniować kilku odbiorców. Jeśli nie, szybkość działania będzie niiiskaaa.
  1. <?php
  2. //funkcja
  3. function wyslij($serwer,$uzytkownik,$haslo,$email,$do,$temat,$zawartosc)
  4. {
  5. //kodowanie w standardzie base64
  6. $uzytkownik = base64_encode($uzytkownik);
  7. $haslo = base64_encode($haslo);
  8. //nawizanie połączenia z serwerem SMTP
  9. $polaczenie = fsockopen($serwer,25);
  10. //sprawdzanie dostępności serwera
  11. $spr[0] = fgets($polaczenie,1000);
  12. //sekwencja:
  13. //1. polecenie uytkownika - fputs
  14. //2. odpowiedź serwera - fgets - idzie do zmiennej $spr do późniejszej analizy
  15. //powitanie serwera
  16. fputs($polaczenie,"HELO $ip\r\n");
  17. $spr[1] = fgets($polaczenie,1000);
  18. //autoryzacja
  19. fputs($polaczenie,"AUTH LOGIN\r\n");
  20. $spr[2] = fgets($polaczenie,1000);
  21. fputs($polaczenie,$uzytkownik."\r\n");
  22. $spr[3] = fgets($polaczenie,1000);
  23. fputs($polaczenie,$haslo."\r\n");
  24. $spr[4] = fgets($polaczenie,1000);
  25. //polecenie wysyłki
  26. fputs($polaczenie,"MAIL FROM: $email\r\n");
  27. $spr[5] = fgets($polaczenie,1000);
  28. fputs($polaczenie,"RCPT TO: $do\r\n");
  29. $spr[6] = fgets($polaczenie,1000);
  30. //wpisywanie treci i nagłówków�
  31. fputs($polaczenie,"DATA\r\n");
  32. $spr[7] = fgets($polaczenie,1000);
  33. fputs($polaczenie,"Subject: $temat\r\n");
  34. fputs($polaczenie,"From: $email\r\n");
  35. fputs($polaczenie,"To: $do\r\n");
  36. fputs($polaczenie,"\r\n");
  37. fputs($polaczenie,"$zawartosc\r\n");
  38. fputs($polaczenie,".\r\n");
  39. $spr[8] = fgets($polaczenie,1000);
  40. //koniec poczenia
  41. fputs($polaczenie,"quit\r\n");
  42. $spr[9] = fgets($polaczenie,1000);
  43. //analiza kodów odpowiedzi serwera SMTP za pomoc ereg
  44. //i przypisanie zmiennej $wynik odpowiedniego komunikatu
  45. $wynik = 0;
  46. if (ereg('220',$spr[0]) && ereg('250',$spr[1]) && ereg('334',$spr[2]) && ereg('334',$spr[3]) && ereg('235',$spr[4]) && ereg('250',$spr[5]) && ereg('250',$spr[6]) && ereg('354',$spr[7]) && ereg('250',$spr[8]) && ereg('221',$spr[9]))
  47. {
  48.  $wynik = "Udało się wysłać wiadomość!";
  49. }
  50. else
  51. {
  52.  $wynik = "Mamy tu jakiś błąd!";
  53. }
  54. return $wynik;
  55. }
  56. ?>


string wyslij ( string $serwer, string $uzytkownik, string $haslo, string $email, string $do, string $temat, string $zawartosc );

Funkcja wysyła wiadomość o treści $zawartosc z adresu $email na serwerze $serwer do adresata określonego parametrem $do (musimy podać hasło do swojej skrzynki pocztowej jako trzeci parametr). Temat określamy jako parametr $temat. Funkcja korzysta z mechanizmu autoryzacji AUTH LOGIN, używanego na większości serwerów SMTP. Przykłady polskich serwerów SMTP to:

-smtp.wp.pl
-poczta.interia.pl
-poczta.o2.pl

Działający skrypt, który używa tej funkcji, można znaleźć pod adresem http://slash-forum.com/SlashApps/MailerX. W razie potrzeby mogę komuś wyłożyć podstawy protokołu SMTP...
!!_:!SnAkE!:_!!
SUPER SPRAWA exclamation.gif smile.gif
Wielkie dzieki za Twoją pomoc, byla:
-kompetentna;
-fachowa;
-bezspzreczna;
-wyczerpujaca;

smile.gif Nie bylo problemow z ustaleniem wielu odbiorcow - poprostu w petli wysylal maile zmieniajac adres docelowy smile.gif
Raz jeszcze wielkie dzieki, uratowalo mi to zycie smile.gif Pozdrawiam smile.gif exclamation.gif
KRAA1
Witam ja mam inny problem mam na stronie formularz kontaktowy i raz mi wysyła a drugi raz nie admin na serwerze pisze że mam dopisać skrypt czy warunke mail() wysyła się poprawnie. Niestety nie mam taaakiej wiedzy czy ktoś mógł by mi pomóc smile.gif
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.