Creo que el código trabajaría mejor de este modo:
Código PHP:
<?php
$header = "From: [email protected]\r\nContent-type: text/html; charset=utf-8\r\n";
$asunto = "Programación.";
$ultimoCorreo = "";
while($row = mysql_fetch_assoc($select)) {
if($ultimoCorreo != $row['mail']) {
$mensaje = '<font face="Tahoma, Arial" size="2"><font size="3"><b>'.$row['titulo'].'</b></font><br /><font size="2">'.strip_tags($row['descripcion']).'<br /><b>Localidad:</b>'.$row['lugar'].'<br /><b>Fecha:</b>'.$row['f_inicio'].'<br /><b>Más detalles en:</b><a href="pub.mosevent.php?id_reg='.$row['id'].'">Leer mas</a></font><br/><br/>';
mail($row['mail'], $asunto, $mensaje, $header);
}
$ultimoCorreo = $row['mail'];
}
?>
Pero no he entendido exactamente lo que quieres hacer, ¿enviar un mail por registro, o enviar un email con todos los registros dentro?