Basicamente seria algo asi:
Código PHP:
if (!isset($_GET['inicio'])) {
$inicio=0;
} else {
$inicio=$_GET['inicio'];
}
$porpagina=200; // numero de emails por vez
$sql="SELECT tus campos FROM tu tabla WHERE tus condiciones ORDER BY tu orden LIMIT $inicio, $porpagina";
// ejecutas $sql y recorres el resultado con un while enviando los emails
...
// ...
$numeroEnviado=mysql_num_rows($result); // miramos cuantos registro ha leido esta vez
if ($numeroEnviado<$porpagina) {
// en la ultima pagina hay menos registro que $porpagina
// asi que es la ultima pagina
header("Location: finalizado.php"); // la pagina que informa que se ha finalizado
exit;
} else {
// todavia quedan paginas
$inicio=$inicio+$porpagina;
header("Location: mailing.php?inicio=$inicio"); // mailing es este mismo script
exit;
}
Si originalmente el script recibia otros parametros, tendrias que propagarlos en el location a mailing.php.
Asi seria la idea. El codigo tiene un pequeño fallo en el caso de que el numero de registros sea multiplo de $porpagina, ya que hace una redireccion mas a mailing.php.
Suerte.