Questo
che è nel codice php non ha motivo di esistere in quanto, quando premi il tasto invio o submitCodice PHP:if( isset($_POST['invia']) ) { //se si preme INVIA si puó andare avanti
come vuoi chiamarlo,automaticamente nella action del codice html già lo istruisci verso una
pagina,in questo caso mail.php,quindi che motivo hai di controllare il tasto?non ci vedo il nesso;poi,nel tuo caso non hai bisogno delle sessioni perchè chiami una pagina con il metodo $_POST passandogli dei parametri,piuttosto ricontrollerei tutto il codice magari un pezzo per volta per capire dove possa essere l'errore.

Rispondi quotando