Có hai vấn đề ở đây:
- Bạn không xóa địa chỉ khỏi thư, vì vậy khi bạn thêm địa chỉ thứ hai, địa chỉ đầu tiên vẫn ở đó và cả hai sẽ thấy địa chỉ kia.
- Bạn đang sử dụng
header
chuyển hướng trong vòng lặp của bạn mà không kết thúc tập lệnh của bạn. Điều này có thể khiến mã sau khi chuyển hướng chạy, nhưng không có gì đảm bảo về thời lượng và thời lượng.
Vấn đề đầu tiên bạn có thể giải quyết bằng cách xóa người nhận ở cuối vòng lặp:
$mail->ClearAllRecipients();
Đối với vấn đề thứ hai, bạn không nên chuyển hướng bất kỳ nơi nào bên trong vòng lặp và khi bạn chuyển hướng sau khi tất cả thư đã được gửi, bạn nên thoát scipt của mình bằng cách sử dụng exit;
để không có gì được thực thi sau đó.