Snoopy
20 Mai 2010, 13:49
20 Mai 2010, 13:49
FSB version 2.0.x
» Support général pour FSB2 » Faire valider une modif de portail_newsletter.php, svp
Bonjour,
Je souhaitais modifier le fichier portail_newsletter.php afin que celui-ci n'envoie que par paquet de 100 mails avec un délai entre chaque paquet.
J'ai trouvé un morceau de script que j'ai adapté, et j'aurais aimé avoir votre avis pour savoir si le code était bon.
Voici le code :
Merci par avance pour votre aide
Je souhaitais modifier le fichier portail_newsletter.php afin que celui-ci n'envoie que par paquet de 100 mails avec un délai entre chaque paquet.
J'ai trouvé un morceau de script que j'ai adapté, et j'aurais aimé avoir votre avis pour savoir si le code était bon.
Voici le code :
PHP (Sélectionner le code)
public function send_email() { $nbenvoi = 0; //nbre total de mails $sql_c = 'SELECT count(u_nickname) FROM ' . SQL_PREFIX . 'users WHERE u_newsletter = 1'; $result_c = Fsb::$db->query($sql_c); $row_c = Fsb::$db->fetch_row($result_c); $total = $total[0]; //prochain numéro de paquet à envoyer $numpaquet = 1; //nombre de mails par paquet $nb = 100; //determine le nombre de paquet de 100 mails à envoyer (arrondi a l'entier superieur) $nbpaquet = ceil($total/$nb); //on envoie les paquets 1 par 1 avec 30 secondes de delai entre chacun for ($i=1; $i<=$nbpaquet; $i ++) { $debut = ($numpaquet-1) * $nb; // On récupère la liste des membres souscrits à la newsletter $sql = ("SELECT u_nickname, u_email, u_language FROM " . SQL_PREFIX . "users WHERE u_newsletter = 1 LIMIT " . $debut . ", " . $nb); $result = Fsb::$db->query($sql); $newsletter = array(); while ($row = Fsb::$db->row($result)) { if (!isset($newsletter[$row['u_language']])) { $newsletter[$row['u_language']] = array(); } $newsletter[$row['u_language']][] = $row['u_email']; } Fsb::$db->free($result); // Envoie de la newsletter foreach ($newsletter AS $language => $mail_list) { $mail = new Notify_mail(); foreach ($mail_list AS $bcc) { $mail->AddBCC($bcc); } $mail->Subject = (Http::request('pm_newsletter_subject', 'post')) ? Http::request('pm_newsletter_subject', 'post') : Fsb::$session->lang('no_subject'); $mail->set_file(ROOT . 'lang/' . $language . '/mail/newsletter.txt'); $mail->set_vars(array( 'FORUM_NAME' => Fsb::$cfg->get('forum_name'), 'CONTENT' => htmlspecialchars(Http::request('pm_newsletter_content', 'post')), 'U_FORUM' => Fsb::$cfg->get('fsb_path'), 'U_UNSUBSCRIBE' => Fsb::$cfg->get('fsb_path') . '/index.' . PHPEXT . '?p=portail', )); $mail->Send(); $mail->SmtpClose(); } $numpaquet++; sleep(30); } Http::redirect(ROOT . 'index.' . PHPEXT . '?p=portail'); }
Merci par avance pour votre aide




, moi j'ai fait le choix de modifier le form du forum fsb2, c'est pas le plus simple lorsqu'on ne connait pas bien la façon dont ça été codé, mais je trouve cela mieux "intégré".