no il form lascialo così come è, modifichiamo la query in modo che estragga un solo record
e poi per fare le cose per bene, visto che stiamo usando una chiave univoca e quindi la query obbligatoriamente estrarrà un solo record, ci andiamo a togliere il ciclo while che non serve a nullaCodice PHP:
$sql1="select * from newsletter_categories where id ='".$_POST['categoria']."' ";
// usa $_GET o $_POST a seconda del method che hai nel form
ti ho commentato le righe di codice che dovrai eliminare sostituendole con le nuoveCodice PHP:
//while($riga=mysql_fetch_array($dati1)){
// $body .= "Un nuovo utente si è ISCRITTO alla Newsletter: " . trim(stripslashes($_POST["email1"])) . " In questa Città: " . $riga['name'] . "\n";
//}
$riga=mysql_fetch_array($dati1);
$body .= "Un nuovo utente si è ISCRITTO alla Newsletter: " . trim(stripslashes($_POST["email1"])) . " In questa Città: " . $riga['name'] . "\n";