Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP]PHP Mailer nie wysyła e-maili
amii
post
Post #1





Grupa: Zarejestrowani
Postów: 728
Pomógł: 76
Dołączył: 12.06.2009

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


Funkcja ma wysyłać 100 e-maili pobranych z bazy danych. Korzystam z klasy phpmailer, niby wszystko OK wyświetlają się komunikaty mail sent ale funkcja nie wysyła e-maili. Poniżej zamieszczam całość kodu odpowiedzialnego za wysyłkę e-maili. Funkcja pobiera dane z plików i bazy danych. Dane do phpmailer są poprawne bo funkcja nie wywala się przy raportowaniu błędów po za tym dane te były skopiowane z innej działającej funkcji na tym samym serwerze.
Zapytanie do bazy OK funkcja zwraca prawidłowe wartości.

  1. function wyslij($plik3='statystyki.txt', $ilosc=100) {
  2. //$suma liczba ogólna wszystkich emaili w bazie to powinien byc numer ostatniego id
  3. //$ plik to plik ze statystykami gdzie jest zapisywane ile maili zostalo do tej pory wyslanych utworz wlasny plik i nada mu uprwnienia do zapisu chmod 777 zaleca sie utowrzenie pliku o nazwie statystyki.txt
  4. define('SQL_HOST', 'localhost'); //numer hosta na 99% localhost
  5. define('SQL_USER', 'user_bazy'); //nazwa uzytkownika bazy danych
  6. define('SQL_PASS', 'haslo_bazy'); //haslo bazy danych
  7. define('SQL_DB', 'baza'); //nazwa bazy danych
  8. $a = 0; //zmienna liczaca ilosc wyslanych e-maili
  9.  
  10.  
  11. $conn = mysql_connect(SQL_HOST, SQL_USER, SQL_PASS) or die (mysql_error());
  12. mysql_select_db(SQL_DB, $conn) or die ('Wystapil blad podczas laczenia sie z serwerem bazy danych w funkcji wyslij: ' . mysql_error());
  13.  
  14.  
  15. if (isset($_POST['suma']) && $_POST['suma']!="") {$suma=$_POST['suma'];}
  16. else {
  17. $sql4 = "SELECT id FROM tabelka";
  18. $zapytaj1 = mysql_query($sql4);
  19. $suma = mysql_num_rows($zapytaj1);
  20. echo 'Zapytania ' . $suma . '<br>';
  21. }
  22. if ($ilosc > $suma && $suma <= 100) {$ilosc = $suma;} //jesli ilosc jaka chcemy wyslac za jednym razem jest wieksza od ilsoci maili w bazie to wysylamy wszystkie maile w bazie
  23.  
  24.  
  25. if (isset($_POST['adresy']) && $_POST['adresy']!="") {$ilosc=$_POST['adresy'];} //ustawiamy domyslnie ze wysylamy 100 adresow
  26.  
  27.  
  28. $ile = otworz($plik3='statystyki.txt', $ilosc); //wywolanie funkcji otwierajacej plik ze statystykami jako argument przekazujemy nazwe pliku, funkcja zwraca ilosc wyslanych emaili
  29. $wartosc = $ile - $ilosc; //wysylamy umowne 100 maili
  30. // echo 'Ile wynosi ' .$ile. '<br><br>';
  31.  
  32. if ($ile > $suma) {
  33. skasuj ($plik3); //jesli ilosc wyslanych maili jest wieksza od calkowitej ich sumy to zerujemy plik ze statystykami
  34. }
  35.  
  36.  
  37.  
  38. if ($wartosc <= 0) {
  39. $wartosc = 1;
  40. }
  41. if ($ile < 100) {
  42. $ile = $suma; //jesli w bazie jest mniej niz 100 emaili to przypisujemy maksymalna wartosc okreslona na poczatku
  43. }
  44.  
  45. $sql = "SELECT emaile FROM tabelka WHERE id BETWEEN '$wartosc' AND '$ile'";
  46. $zapytaj = mysql_query($sql) or die ('Nie moge sie polaczyc z baza w funkcji wyslij' . mysql_error());
  47.  
  48.  
  49. $mail = new PHPMailer(true);
  50.  
  51.  
  52. $mail->IsSMTP(); // set mailer to use SMTP
  53. $mail->Host = ""; // specify main and backup server
  54. $mail->SMTPAuth = true; // turn on SMTP authentication
  55. //$mail->SMTPDebug = true;
  56. $mail->Host = ""; // specify main and backup server
  57. $mail->Port = 25;
  58. $mail->Username = ""; // SMTP username
  59. $mail->Password = "haslo"; // SMTP password
  60. $mail->From = "Od kogo wiadomosc";
  61. $mail->FromName = "Administrator";
  62. $mail->AddReplyTo("adres@do_odpowiedzi.pl", "Tytul");
  63.  
  64.  
  65. //$mail->AddAttachment("tmp/test.php"); // add attachments
  66. //$mail->AddAttachment("/tmp/image.jpg", "new.jpg"); // optional name
  67. $mail->IsHTML(true); // set email format to HTML
  68.  
  69. $mail->Subject = "Tytul wiadomosci";
  70. $mail->Body = "tresc wysylanej wiadomosci";
  71.  
  72. $mail->AltBody = "To jest widomość wysłana w formacie HTML";
  73.  
  74.  
  75.  
  76. while ($row = mysql_fetch_array($zapytaj)) {
  77.  
  78. $mail->AddAddress($row['emaile'], '');
  79.  
  80. echo 'Mail '. $row['emaile'] . '<br>';
  81.  
  82.  
  83. if(!$mail->Send())
  84. {
  85. echo "Wiadomosc nie zostala wyslana. <p>";
  86. echo "Mailer Error: " . $mail->ErrorInfo;
  87. }
  88. $mail->ClearAddresses();
  89. $mail->ClearAttachments();
  90. echo "mail sent <br>";
  91.  
  92.  
  93. }
  94.  
  95. $i = odczyt($plik='statystyki.txt');
  96.  
  97. if ($i > $suma) { //jesli licznik jest wiekszy od ilosci emaili w bazie to przyrownujemy go do ilosci maili w bazie
  98. $i = $suma;
  99. }


Ten post edytował amii 11.06.2010, 11:15:33


--------------------
gry flash online
Dobry hosting i tanie odnowienia domen firma: masternet.
Zarabianie bez wysiłku na domenach bez ruchu: prolink.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 5)
jajcarzd1
post
Post #2





Grupa: Zarejestrowani
Postów: 215
Pomógł: 19
Dołączył: 24.12.2003
Skąd: Przemyśl

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


Wstaw na sztywno jednego maila i sprawdź czy wysyła. Po drugie czy jesteś pewny że łączy się poprawnie z serwerem smtp ? Spróbuj może na innym porcie niż 25 np. 587

Poza tym jak rozumiem

  1. $mail->Host = "";
  2. $mail->Username = "";
  3.  


masz uzupełnione ? I dlaczego masz 2 razy

  1. $mail->Host = "";


Ten post edytował jajcarzd1 11.06.2010, 11:24:13


--------------------
My mind is glowing ...
Jeśli pomogłem push the button :)
Go to the top of the page
+Quote Post
amii
post
Post #3





Grupa: Zarejestrowani
Postów: 728
Pomógł: 76
Dołączył: 12.06.2009

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


Tak pola z host i username mam uzupełnione. Host jeden usunąłem. Po wpisaniu innego portu wywalił takie coś:

Warning: fsockopen() [function.fsockopen]: unable to connect to webmail.alkomaty.biz:587 (Connection refused) in /var/www/vhosts/alkomaty.biz/httpdocs/sitemap/class.smtp.php on line 122
Wiadomosc nie zostala wyslana.

Wklepałem też pojedynczy e-mail na sztywno cały czas niestety to samo :/

Ten post edytował amii 11.06.2010, 11:37:49


--------------------
gry flash online
Dobry hosting i tanie odnowienia domen firma: masternet.
Zarabianie bez wysiłku na domenach bez ruchu: prolink.
Go to the top of the page
+Quote Post
thek
post
Post #4





Grupa: Moderatorzy
Postów: 4 362
Pomógł: 714
Dołączył: 12.02.2009
Skąd: Jak się położę tak leżę :D




W takim razie sam widzisz, że błąd jest podczas ustanawiania połączenia. Pewnie gdzieś sa nieprawidłowe dane lub serwer ma blokadę dla socketów.


--------------------
Najpierw był manual... Jeśli tam nie zawarto słów mądrości to zapytaj wszechwiedzącego Google zadając mu własciwe pytania. A jeśli i on milczy to Twój problem nie istnieje :D
Go to the top of the page
+Quote Post
zordon
post
Post #5





Grupa: Zarejestrowani
Postów: 358
Pomógł: 78
Dołączył: 4.11.2008
Skąd: Kraków

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


no ale rozumiem ze wczesniej na porcie 25 nie wywalało takiego błędu?

daj sobie najpierw wysylanie jednego maila z wpisanymi danymi adresowymi "na sztywno" a komunikat o wyslaniu maila daj sobie w klamre else po wykrywaniu błędu. sprawdz czy na pewno masz włączone wyswietlanie wszystkich błędów na serwerze.

Go to the top of the page
+Quote Post
amii
post
Post #6





Grupa: Zarejestrowani
Postów: 728
Pomógł: 76
Dołączył: 12.06.2009

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


OK już działa, skopiowałem wszystkie ustawienia a później modyfikowałem, naprawdę nie wiem czym to dokładnie było spowodowane być może była zła kolejność niektórych linijek.


--------------------
gry flash online
Dobry hosting i tanie odnowienia domen firma: masternet.
Zarabianie bez wysiłku na domenach bez ruchu: prolink.
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 Aktualny czas: 20.08.2025 - 10:18