Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP]Skrypt do mailingu
Forum PHP.pl > Forum > Przedszkole
musiek86
Witam mam pewien skrypt do wysyłania maili z php, pobiera on maile z bazy po 20szt przy załadowaniu. Chciałbym go tak przerobić by pobierał 20szt, wysyłał, czekał 5-10 min i wysyłał kolejna porcję. Poniżej kod:
  1. <?php
  2. #tu część łącząca z bazą
  3. require_once("phpmailer/class.phpmailer.php");
  4.  
  5.  
  6. $mail = new PHPMailer();
  7.  
  8. $mail->PluginDir = "phpmailer/";
  9. $mail->Mailer = "smtp";
  10. $mail->Host = "XXX";
  11. $mail->Port = 25;
  12.  
  13. $mail->SMTPKeepAlive = true;
  14. $mail->SMTPAuth = true;
  15. $mail->Username = "XXX";
  16. $mail->Password = "XXX";
  17.  
  18. $mail->SetLanguage("pl", "phpmailer/language/");
  19. $mail->CharSet = "UTF-8";
  20. $mail->ContentType = "text/html";
  21.  
  22. $mail->From = "XXX";
  23. $mail->FromName = "XXX";
  24. $mail->Subject = "XXX";
  25. $mail->Body = 'XXX';
  26.  
  27. $wynik = mysql_query("SELECT email FROM users LIMIT 392 , 20") or die(mysql_error());
  28.  
  29. while ($rekord = mysql_fetch_assoc($wynik))
  30. {
  31. $mail->AddAddress($rekord['email']);
  32.  
  33. if($mail->Send())
  34. echo "E-mail do ".$rekord['email']." został wysłany <br>";
  35. else
  36. echo "E-mail do ".$rekord['email']." nie mógł zostać wysłany, przyczyna :".$mail->ErrorInfo."<br>";
  37.  
  38. $mail->ClearAddresses();
  39. sleep(10);
  40. }
  41.  
  42. $mail->SmtpClose();
  43. echo '</body></html>';
  44. ?>


O ile dobrze kombinuje przed zmienną wynik nalezało by dać:
  1. $paczka = 220; // Przykładowo zaczynamy od maila który w bazie jest 220
  2. for $paczka = 220; $paczka < 7000; $paczka == $paczka+20; //7000 bo tyle maili w bazie, +20 bo tyle jest pobierane jednorazowo z bazy
  3. {
  4. $wynik = mysql_query("SELECT email FROM users LIMIT $paczka , 20") or die(mysql_error());
  5.  
  6. while ($rekord = mysql_fetch_assoc($wynik))
  7. {
  8. $mail->AddAddress($rekord['email']);
  9.  
  10. if($mail->Send())
  11. echo "E-mail do ".$rekord['email']." został wysłany <br>";
  12. else
  13. echo "E-mail do ".$rekord['email']." nie mógł zostać wysłany, przyczyna :".$mail->ErrorInfo."<br>";
  14.  
  15. $mail->ClearAddresses();
  16. sleep(600); //10*60sek=10 min - czas po którym ma zostac pobrana kolejna paczka mailii
  17. }
  18. }

Mogłby ktoś zerknąć na to okiem i wskazać - nakierować na ewentualne błędy?
Mackos
Zrób to w nieco inny sposób bo tak to sobie zadusisz serwer albo skrypt.
Kolejne uruchomienie skryptu kontroluj z crona, ewentualnie zapisuj gdzieś w bazie danych na którym emailu skończyłeś wysyłkę uprzednio.
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.