Ti traduco quello che hai scritto:
Codice PHP:
//invio una mail ha... da... oggetto.... ecc...
mail($receiverMail , $subject, $msgformat, "From: $nome_completo <$email>");
//scrivo a video Il messaggio è stato inviato! ecc...
echo "<h3>Il messaggio e' stato inviato!</h3>
Riceverai una risposta il prima possibile!</p>";
//Se nell'url c'è una variabile chiamata msg, scrivi il contenuto a video
if($_GET['msg']){ echo $_GET['msg']; }
}}
Dove stà l'errore? Nel credere che con php tu possa passare variabili senza inviarle ad una pagina (la stessa o un'altra che sia).
PHP non è un linguaggio asincrono, quindi devi sempre inviare i dati che verranno poi processati dal server eccetera eccetera.
Se vuoi inviare una mail usi la funzione mail(), come hai fatto.
Ma se vuoi visualizzare un messaggio, devi capire QUANDO questo messaggio deve comparire.
Così com'è scritto, appena si carica la pagina viene inviata la mail, quindi se scrivi sotto che è stata inviata correttamente è giusto (sempre che la funzione mail() sia settata correttamente) ma non fa al caso tuo.
Quello che serve a te prima di tutto è un form di invio mail.
Questo form ha come action se stessa, quindi:
//pagina form.php
<form action="form.php?msg=Il messaggio è stato inviato!" method="post">
qui inserisci i campi necessari per l'invio della mail e quando invii il form, recuperi i valori. Come? così:
$messaggio=$_GET['msg'];
$nome=$_POST['nome'];
$email=$_POST['email'];
E questo va messo nella stessa pagina del form.
Scritta così però non va bene, in quanto se entri nel form senza che riceva le sopracitate variabili ti crea errore.
Allora fai un controllo prima. Se riceve un qualsiasi $_POST, vuol dire che sono stati inviati dati dal form, e quindi procedi come sopra:
Codice PHP:
if($_POST['email']){
$messaggio=$_GET['msg'];
$nome=$_POST['nome'];
$email=$_POST['email'];
mail($receiverMail , $subject, $msgformat, "From: $nome_completo <$email>");
//in questo caso scriviamo un messaggio a video, ma possiamo prelevare la stringa da scrivere da $_GET['msg'], altrimenti toglila dall'action del form
echo "<h3>Il messaggio e' stato inviato!</h3>
Riceverai una risposta il prima possibile!</p>";
}
Così quando invii i dati dal form alla stessa pagina, la pagina controlla se ci sono effettivamente dei dati in arrivo, li assegna a variabili (qui messe per farti capire il funzionamento ma non corrette rispetto al tuo lavoro, quindi personalizzale), invia la mail e scrive a video che la mail è stata inviata correttamente.
Se invece entri nella pagina form direttamente, $_POST['email'] è nullo e quindi non si verifica la condizione per l'invio dell'email.