devi seguire un principio moltooooooo semplice

estrarre tutti i risultati e mandarli a blocchi!

ad esempio ...

codice:
$query = mysql_query("SELECT email_address FROM addresses");

$canExit == false;
$tmpEmailList = array();
$counter = 0;
do
{
  $row = mysql_fetch_row($query);
  if ($row === false)
  {
    $canExit = true;
  }
  else
  {
    $counter++;
    $tmpEmailList[] = $row[0];
  }
  
  if ($canExit == false || $counter == 50)
  {
    $to = array_pop($tmpEmailList);
    $bccString = implode(', ', $tmpEmailList);
    mail($to, $subject, $body, $headers . "\r\nBCC: {$bccString}\r\n");
    $counter = 0;
    $tmpEmailList = array();
  }
} while($canExit == false)
all'inizio definisci le variabili $subject, $body e $headers in modo che imposti i parametri e con questo codice invierai le mail a blocchi da 50 senza avere problemi

al max se ci vuoi mettere un tempo morto dopo l'invio ma te lo sconsiglio ... non è poi cosi utile ^^