Buongiorno a tutti!

ho una pagina che contiente un form e un div dove vorrei che uscisse il risultato della pagina php dopo l' elaborazione dei dati inviati tramite POST (si tratta semplicemente di un invio email)

la pagina con il form è:
codice:
$(function(){
     $("#gpref").submit(function(){
var datiem=$("#gpref").serialize();
$.ajax({
    type:"POST",
    url: "uty/inviaemail.php",
    data: datiem,
    dataType: "html",
    success: function(msg){setTimeout(function(){ $("#risultato").html(msg); }, 10000);},
    error: function(msg){setTimeout(function(){ $("#risultato").html(msg); }, 10000);},
    complete: function(msg){setTimeout(function(){ $("#risultato").html(msg); }, 10000);}

});
});
});
<form  action="#" method="POST" NAME="gpref" id="gpref" >
<input type="text" size="35" maxlength="50" name="emailto" <?php echo "value=\"$rec_email\"";?>
<textarea name="corpoemail" rows="7" cols="40"></textarea>/>
</form>

//
<div id="risultato"></div>
semplice semplice
la pagina che invia la mail è

Codice PHP:
//codice invio email

.
.
.
.
.
.


if (!
$mail->send()) {
    
//echo "Errore: " . $mail->ErrorInfo;
echo "Email non inviata!";
    
$ok=1;
} else {
echo 
"Messaggio inviato!";
    
$ok=2;

se faccio la richiesta classica ovvero richiamando direttamente la pagina inviaemail.php la mail parte senza problemi
ma
se faccio tamite ajax parte ma non vedo il risultato che viene generato nel php echo "Messaggio inviato!"; oppure echo "Email non inviata!";
dovrebbe visualizzarsi nel div risultato

dove sbaglio?

ho provato anche a mettere il timeout per vedere se per caso succede qualche cosa ma nulla...


Grazie