Mamy tu do czynienia z dwoma problemami:
- Nie usuwasz adresu z poczty, więc po dodaniu drugiego, pierwszy nadal tam jest i obaj zobaczą drugi adres.
- Używasz
header
przekierowanie w pętli bez kończenia skryptu. Może to spowodować uruchomienie kodu po przekierowaniu, ale nie ma gwarancji, ile i jak długo.
Pierwszy problem, który możesz rozwiązać, czyszcząc odbiorców na końcu pętli:
$mail->ClearAllRecipients();
Jeśli chodzi o drugi problem, nie powinieneś przekierowywać nigdzie wewnątrz pętli, a kiedy przekierowujesz po wysłaniu wszystkich wiadomości, powinieneś wyjść ze skryptu za pomocą exit;
aby nic nie zostało potem wykonane.