Chcesz to zrobić "porządnie" - zainteresuj się Freshmailem, Altimusem, SARE itp. - "walenie" maili w foreachu raczej Ci nie wyjdzie. Przeciętne konto w shared hostingu ma limit 100 wiadomości na godzinę. Nadanie wiadomości to nie to samo co wysłanie - "nadanie" 5K maili zajmie kilka sekund, ale serwer poczty bedzie je wysyłał dużo dłużej (w zależności od konfiguracji i tego ile i jakiego rodzaju błędy zostaną zwrócone przez serwery adresatów - wiadomości moga utknąć w kolejce nawet na kilka dni). Kolejka maili na serwerze zapchana takim pseudo mailingiem uniemożliwi wysyłanie "normalnych" maili - dlatego dobrze puścić mailing przez osobny serwer poczty...... i takie tam...aha - poczytaj o GIODO

Jeśli Cię nie przekonałe, to
foreach($mails as $mail)
.....