La funzione set_replace() non esiste in PHP (undefined function, appunto).
Inoltre $pagina da dove ti arriva?
Per fare un esempio, dovresti avere da qualche parte un txt in cui hai una sorta di "template" per il tuo messaggio.
In questo template inserisci dei marcatori tipo {nome}, {cognome} ecc. e poi vai di str_replace() per sostituire questi marcatori con i dati che ti arrivano via form.
codice:
$to = "indirzzo@hotmail.com";
$from = $_POST['mail'];
$subject = "Iscrizioni dal sito";
// Prendo il contenuto di messaggio.txt
$pagina = implode('', file('messaggio.txt'));
$pagina = str_replace('{nome}' , $_POST['nome'], $pagina);
$pagina = str_replace('{cognome}' , $_POST['cognome'], $pagina);
// eccetera
if (mail( $to, $subject, $pagina )) {
echo 'mail invitata';
}
else {
echo 'mail fallita';
}
Una cosa del genere dovrebbe funzionare (chiaramente si può sistemare un po meglio, a piacere)