Hier gibt es zwei Probleme:
- Sie entfernen die Adresse nicht aus der E-Mail. Wenn Sie also eine zweite hinzufügen, ist die erste immer noch vorhanden und beide sehen die andere Adresse.
- Sie verwenden einen
header
Umleitung in Ihrer Schleife, ohne Ihr Skript zu beenden. Dies kann dazu führen, dass Code nach der Weiterleitung ausgeführt wird, aber es gibt keine Garantie dafür, wie viel und wie lange.
Das erste Problem, das Sie lösen können, indem Sie die Empfänger am Ende der Schleife löschen:
$mail->ClearAllRecipients();
Was das zweite Problem betrifft, sollten Sie nirgendwo innerhalb der Schleife umleiten, und wenn Sie umleiten, nachdem alle Nachrichten gesendet wurden, sollten Sie Ihr Skript mit exit;
beenden damit danach nichts mehr ausgeführt wird.