che io sappia nn puoi concatenare col punto l'output di un while. Usa una stringa di appoggio tipo così:
codice:
mysql_connect("a","b","c"); 
mysql_select_db("db3"); 
$dati=mysql_query(" 
SELECT * 
FROM anagrafica 
WHERE id_contatti = $filtro "); 

$strwhile="<table>";
while($array=mysql_fetch_array($dati)){ // riga segnalata per l'errore 
$strwhile.="
<tr> 
<td>Nome</td> 
</tr> 
<tr> 
<td>$array[Nome]</td> 

</tr>
"; 
}
$strwhile.="</table></body></html>";
 
$NumEntries=mysql_num_rows($dati);

$mittente = 'email@sito.it \r\n'; 
$header .= "MIME-Version: 1.0\n"; 
$header .= "Content-Type: text/html; charset=\"iso-8859-1\"\n"; 
$header .= "Content-Transfer-Encoding: 7bit\n\n"; 
$destinatario = "destinatario@sito.it"; 
$oggetto = "<html><body>Richiesta preventivo"; 
$messaggio = "Testo email". $NumEntries . " " . $strwhile;
mail($destinatario, $oggetto, $messaggio, $mittente);
Ho editato perché mi son accorto che era sbagliata anche la generazione della tabella.