Bonjour,
Effectivement envoyer des mails en boucle via PHP n'est pas la solution idéale.
De plus certains hébergeurs ont toutes sortes de restrictions en place, par un exemple un timeout de 30 ou 60 secondes voire moins, ce qui empêche les scripts de tourner pendant une longue durée.
Sur un de mes gros sites: j'ai adopté la stratégie suivante: je délègue le tout à un logiciel de mail list (liste de diffusion) déjà installé sur le serveur: il s'agit de Mailman (il en existe d'autres similaires).
Concrètement les membres peuvent choisir de s'inscrire ou se désinscrire à un newsletter en cochant une case (c'est un formulaire en PHP qui permet de renseigner leur profil et sauve le tout dans une DB mySQL, du classique donc). Ensuite via la fonction exec() j'invoque la commande add_members ou remove_members selon le cas pour ajouter ou retirer les membres de la mail list.
Voir un aperçu des instructions (anglais): http://www.gnu.org/software/mailman/site.html
Il est aussi possible de faire la synchronisation par batch en donnant un fichier texte à importer (sync_members), cela peut être très pratique.
L'avantage d'utiliser un logiciel de mail list c'est que c'est vraiment conçu pour les envois de masse et qu'il gère les envois tranquillement en arrière-plan.
Quand je veux envoyer ma newsletter je n'ai qu'à l'envoyer à newsletter_AT_monsite.com [nom de la liste de diffusion], Mailman reçoit le mail et s'occupe de l'acheminer à chaque membre.
L'inconvénient de cette solution c'est qu'il faut bien configurer la mail list pour éviter le spamming.
Personne d'autre que vous ne devrait pouvoir envoyer du mail aux membres inscrits. Il faut donc:
- mettre des filtres au niveau de l'expéditeur (par exemple seul admin_AT_monsite.com a le droit d'envoyer des messages à la liste)
- évidemment ça ne suffit pas car il est facile d'envoyer un mail en se faisant passer pour qqu'un d'autre, il faut aussi mettre les messages en approbation manuelle; il ne faut pas perdre de vue que c'est un mail list classique.
Il faut éviter que n'importe qui puisse envoyer du spam; si qqu'un peut envoyer librement du spam à newsletter_AT_monsite.com ça touche tous les abonnés donc beaucoup de monde !
Un autre aspect à ne pas négliger est que certains logiciels de mail lists acceptent des instructions via E-mail: par exemple on peut s'inscrire ou se désinscrire en envoyant un mail qui dit "subscribe" ou "subscribe".
Il y a d'autres commandes du style "list members", si j'envoie ça à newsletter_AT_monsite.com Mailman me renvoie une liste de toutes les adresses E-mail faisant partie de la liste de diffusion. Evidemment il faut désactiver ce genre de fonctionnalités ou les restreindre à l'admin si c'est possible !
Bref il faut bien prendre le temps de se familiariser avec les fonctionnalités et faire des tests.
J'ai un serveur dédié donc pas de restrictions particulières. Il est possible que certains hébergeurs n'autorisent pas la commande exec() en PHP, et tous n'offrent pas un logiciel de mail list sur leurs serveurs.
Je pense que pour les envois de masse c'est la seule solution qui tient la route.