Newsletter en PHP avec beaucoup d'inscrits : Problème d'envoi
aureb09
Messages postés
33
Date d'inscription
Statut
Membre
Dernière intervention
-
yg_be Messages postés 23541 Date d'inscription Statut Contributeur Dernière intervention -
yg_be Messages postés 23541 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour à tous !
J'ai créer une newsletter en PHP avec une table appelé "Newsletter" qui liste toutes les adresses mails des inscrits. Voici mon code :
Ce code fonctionne pour un nombre restreint d'adresses mail. Cependant, j'ai près de 500 inscrits et les mails ne sont pas envoyés à cause d'un nombre de destinataires qui seraient restreint par envoi (250 destinataires max apparemment).
Avez-vous des idées pour résoudre ce problème ? J'avais pensé faire des groupes de 50 adresse mails et envoyé un mail par groupe : Pour être plus claire, PHP prendrais les 50 première adresses et enverrai le mail, puis prendrait les 50 suivantes et enverrai un second mail, et ainsi de suite... Je ne sais pas trop comment ecrire ce script? Avec une boucle for et while ?
Merci d'avance pour vos réponses !
J'ai créer une newsletter en PHP avec une table appelé "Newsletter" qui liste toutes les adresses mails des inscrits. Voici mon code :
$msg_email='
<html>
<body style="background:#E1E1E1;padding-top:10px;padding-bottom:10px">
<p>Contenu de la News</p>
</body>
</html>';
$mail_dest = $bdd->query("SELECT * FROM newsletter");
while ($list_mail_dest = $mail_dest->fetch())
{
$list_mail .= ','; //On sépare les adresses par une virgule.
$list_mail .= $list_mail_dest['email'];
}
$mail_dest->closeCursor();
$list_mail = substr($list_mail, 1); //supprime la premier virgule inutile.
$headers = 'From: MonSite <newsletter@monsite.fr>' . "\r\n";
$headers .= 'Content-type: text/html; charset=UTF-8' . "\r\n";
$headers .= 'Bcc:' . $list_mail . '' . "\r\n";
mail('newsletter@monsite.fr', $titre, $msg_email, $headers);
Ce code fonctionne pour un nombre restreint d'adresses mail. Cependant, j'ai près de 500 inscrits et les mails ne sont pas envoyés à cause d'un nombre de destinataires qui seraient restreint par envoi (250 destinataires max apparemment).
Avez-vous des idées pour résoudre ce problème ? J'avais pensé faire des groupes de 50 adresse mails et envoyé un mail par groupe : Pour être plus claire, PHP prendrais les 50 première adresses et enverrai le mail, puis prendrait les 50 suivantes et enverrai un second mail, et ainsi de suite... Je ne sais pas trop comment ecrire ce script? Avec une boucle for et while ?
Merci d'avance pour vos réponses !
A voir également:
- Newsletter en PHP avec beaucoup d'inscrits : Problème d'envoi
- Easy php - Télécharger - Divers Web & Internet
- Expert php pinterest - Télécharger - Langages
- Retour a la ligne php ✓ - Forum PHP
- Php alert - Forum PHP
- Retour à la ligne php ✓ - Forum PHP
3 réponses
Bonjour,
un truc du genre:
un truc du genre:
//fonction pour récupérer la liste de mails function get_listedif($arrayTotal, $deb, $fin){ $result = array(); for($i=$deb;$i<=$fin;$i++){ $result[] = $arrayTotal[$i]; } //on transforme cette liste en string séparée par "," return join(",",$result); } // $all_adre : Toutes les adresses provenant de ta bdd via un fetchAll $nbpaquets = 25; //nom de mails par envoi $nb_adr_total = count($all_adre); $nb_envois = ceil($nb_adr_total / $nbpaquets) for($j = 1 ; $j<=$nb_envois;$j++){ $liste_dif = get_listedif($all_adre, ($j-1)*nbpaquets, $j*nbpaquets) ; //ici tu fais ton envoi de mails //... //... }
Bonjour, Je te remercie de ta réponse ! Ton script me paraît intéressant du coup je l'ai travaillé:
J'ai fait un var_dump de la liste des mails et cela me renvoi que ceci :
Pourquoi je ne vois pas mes adresses ?
Merci pour ton aide !!
$req = $bdd->query("SELECT * FROM newsletter");
// $all_adre : Toutes les adresses provenant de ta bdd via un fetchAll
$all_adre = $req->fetchAll();
//fonction pour récupérer la liste de mails
function get_listedif($arrayTotal, $deb, $fin){
$result = array();
for($i=$deb;$i<=$fin;$i++){
$result[] = $arrayTotal[$i];
}
//on transforme cette liste en string séparée par ","
return join(",",$result);
}
$nbpaquets = 2; //Je prend 2 car je fait un test avec 20 adresses
$nb_adr_total = count($all_adre);
$nb_envois = ceil($nb_adr_total / $nbpaquets);
for($j=1;$j<=$nb_envois;$j++){
$liste_dif = get_listedif($all_adre, ($j-1)*$nbpaquets, $j*$nbpaquets) ;
//affiche mails
var_dump($liste_dif);
}
J'ai fait un var_dump de la liste des mails et cela me renvoi que ceci :
string(17) "Array,Array,Array" string(17) "Array,Array,Array" string(17) "Array,Array,Array" string(17) "Array,Array,Array" string(17) "Array,Array,Array" string(17) "Array,Array,Array" string(17) "Array,Array,Array" string(17) "Array,Array,Array" string(17) "Array,Array,Array" string(17) "Array,Array,Array" string(17) "Array,Array,Array" string(17) "Array,Array,Array" string(7) "Array,,"
Pourquoi je ne vois pas mes adresses ?
Merci pour ton aide !!