Il y a deux problèmes ici :
- Vous ne supprimez pas l'adresse du courrier, donc lorsque vous en ajoutez une seconde, la première est toujours là et les deux verront l'autre adresse.
- Vous utilisez un
header
rediriger dans votre boucle sans terminer votre script. Cela peut entraîner l'exécution du code après la redirection, mais il n'y a aucune garantie quant à la quantité et à la durée.
Le premier problème que vous pouvez résoudre en effaçant les destinataires à la fin de la boucle :
$mail->ClearAllRecipients();
En ce qui concerne le deuxième problème, vous ne devez rediriger nulle part à l'intérieur de la boucle et lorsque vous redirigez après que tous les messages ont été envoyés, vous devez quitter votre scipt en utilisant exit;
afin que rien ne soit exécuté après cela.