Creare un form mail in php

Prima di iniziare dobbiamo verificare di avere una pagina nella quale inserire il codice del form che sarà la poi nostra pagina contatti . Abbiamo creato un documento vuoto chiamato pagina contatti e due cartelle per ospitare magari ci fosse esigenza 2 mail diverse Avremo quindi una situazione simile

Nella prima cartella creeremo un file php che sarà il gestore dell’invio della mail . Chiamiamolo invia.php

Apriamolo e incolliamo il seguente contenuto

<?php // inserisci qui il tuo indirizzo email $receiverMail = “tuo_indirizzo@email.xxx“; // pulizia dei dati inseriti $name = ltrim(rtrim(strip_tags(stripslashes($_POST[‘name’])))); $email = ltrim(rtrim(strip_tags(stripslashes($_POST[‘email’])))); $subject = ltrim(rtrim(strip_tags(stripslashes($_POST[‘subject’])))); $msg = ltrim(rtrim(strip_tags($_POST[‘msg’]))); // lettura dell’indirizzo IP $ip = getenv(“REMOTE_ADDR”); // formattazione del messaggio ( \n per le messe a capo ) $msgformat = “Messaggio da: $name ($ip)\nEmail: $email\n\n$msg”; // verifica campi obbligatori if(empty($name) || empty($email) || empty($subject) || empty($msg)) { echo “<h3>Il messaggio non è stato inviato</h3><p>Compila tutti i campi obbligatori!</p>”; } // verifica indirizzo email elseif(!ereg(“^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,3})$”, $email)) { echo “<h3>Il messaggio non è stato inviato</h3><p>L’indirizzo email indicato non è valido!</p>”; } else { // invio del messaggio mail($receiverMail, $subject, $msgformat, “From: $name <$email>”); echo “<h3>Il messaggio e’ stato inviato!</h3><p>Riceverai una risposta il prima possibile!</p>”; } ?>

Dove $receiverMail = inserirete il vostro indirzzo sulla quale volete ricevere la posta . Ci troveremo quindi con uno screen simile

Aprimo la pagina dei contatti che si presenterà inizialmente cosi :

Facciamo in modo che venga richiamato il tutto tramite il form con il seguente codice tra <body> e </body>

<form method=”post” action=”mail1/invia.php“> <font face=”Verdana”><b><font size=”2″>Nome:<br /></font></b> <input name=”name” size=”30″ maxlength=”40″ style=”font-weight: 700″ /><b><font size=”2″><br /><br /> Email:<br /></font></b> <input name=”email” size=”30″ maxlength=”40″ style=”font-weight: 700″ /><b><font size=”2″><br /><br /> Oggetto:<br /></font></b> <input name=”subject” size=”30″ maxlength=”40″ style=”font-weight: 700″ /><b><font size=”2″><br /><br /> Messaggio:</font></b></font><br /><textarea name=”msg” cols=”50″ rows=”6″></textarea><br /><br /> &nbsp;<input type=”submit” value=”Invia” /> </form>

Abbiamo inserito il file di invio in una cartella di nome mail1 e pertanto è possibile variare la destinazione Salviamo il tutto ed il nostro form di base è prono !


39 commenti

Massimo N. · 28 Aprile 2009 alle 12:37

Ho seguito la guida , sono riuscito a creare il form , vorrei però cambiare “messaggio” con Testo , come devo fare ?
Grazie Massimo

admin · 28 Aprile 2009 alle 13:01

Ciao Massimo N. , puoi modificare il messaggio editando la parte Messaggio in Testo nella parte che qui vedi alla riga 11

Interessato · 1 Maggio 2009 alle 16:14

Ciao a tutti, io ho seguito tutte le istruzioni passo passo, ma alla fine, quando creo il modulo, il tasto invia non compare ma al suo posto c’è la scritta ”Invia” solo come testo. dove ho sbagliato?

Interessato · 1 Maggio 2009 alle 16:30

Ciao ora il tasto mi compare ma, una volta compilato il modulo, mi si apre questo:

Il messaggio non è stato inviato

Compila tutti i campi obbligatori!
”; } // verifica indirizzo email elseif(!ereg(”^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,3})$”, $email)) { echo “
Il messaggio non è stato inviato

L’indirizzo email indicato non è valido!
”; } else { // invio del messaggio mail($receiverMail, $subject, $msgformat, “From: $name ”); echo “
Il messaggio e’ stato inviato!

Riceverai una risposta il prima possibile!
”; } ?>

malgrado io abbia compilato tutti i campi. Che devo fare?

admin · 2 Maggio 2009 alle 11:56

Mi sembra che tu abbia un problema con il php o hai fatto un errore di battuta nel compilare il file ;

justme · 3 Maggio 2009 alle 19:15

Salve, ho lo stesso problema con il tasto invia, che non compare ma al suo posto c’è la scritta ”Invia” solo come testo. Qual è la soluzione al problema?

massimo · 7 Giugno 2009 alle 22:33

Ciao io vorrei creare un form proprio come questo per lasciar eun commento nella pagina che sto visualizando come faccio?
santeguero@yahoo.it

admin · 8 Giugno 2009 alle 19:46

Nella pagina che visualizzi non è possibilie in quanto non di tua proprietà non hai l’accesso di inserirne il codice . Se si riferisce ad una pagina sua basata su wordpress ci sono dei plug-in appositi o si crea una pagina esterna in html linkata “Contattaci” .

Giuglius78988 · 9 Agosto 2009 alle 13:33

Credo di non avere l’estensione php nel server , come posso rimediare in modo da far funzionare il form ?

Giovanna · 14 Novembre 2009 alle 12:47

Grazie mille , mi è stato veramente di aiuto
@Giglius , chiedi al tuo servizio di hosting

stefano · 12 Dicembre 2009 alle 14:31

Ciao, ho creato il form, ma nonostante compilando tutti i campi mi dice che devo compilare tutti i campi,

come posso risolvere?, non credo di aver fatto errori di battitura,

mimmo · 10 Marzo 2010 alle 13:17

Ho risolto;per il tasto invio il problema è che devi riscrivere tutte le virgolette ” nel foglio a mano,probabilmente facendo copia e incolla prende una formattazione non idonea(io uso dreamweaver)

mimmo · 10 Marzo 2010 alle 15:08

Aggiungo che anche a me non funzionava il controllo dei campi obbligatori,quindi ho rimosso la stringa interessata,ora va benone.Grazie

Fausto · 11 Dicembre 2010 alle 17:57

Grazie per questo script a me funziona bene, ma fate attenzione nel copia e incolla c’è un errore delle virgolette devono essere così ” e non così “ ho dovuto fare un cerca e sostituisci ma funziona alla grande.

Vincenzo · 5 Gennaio 2011 alle 00:44

Innanzitutto complimenti per la guida: veloce, semplice, chiara ed efficace.

Volevo chiedere una cosa a proposito del tasto invia, spero di non risultare troppo banale:

Partendo dal presupposto che uso Dreamweaver (ed ho risolto il problema delle virgolette); dopo aver completato la creazione del form ho fatto un anteprima e ho compilato il form, ma quando clicco su invia mi dice che la pagina richiesta non è stata trovata; è un problema che riguarda il fatto che il sito non sia su un server oppure ho sbagliato qualcosa?

Un grazie in anticipo per la collaborazione.

Vincenzo

    admin · 7 Gennaio 2011 alle 11:36

    Assicurati di aver messo nella stessa cartella il file invia.php inoltre necessiti della lettura del php quindi o un webserver locale oppure in remoto su un hosting “qualunque”

      Vincenzo · 9 Gennaio 2011 alle 21:29

      Gentile Admin,
      grazie per la risposta!

      Ho risolto:

      Riguardo alla cartella avevo fatto tutto correttamente, il mio errore, successivamente spartito in 2 diversi errori, era che:

      1 Non avevo caricato il sito (tutti i file riguardanti il sito) su un server (neanche in locale).

      2 Dopo aver osservato attentamente il codice di “invia.php” ho scoperto che non avevo “pulito” bene la prima riga, mandando a capo l’$della mail; un’intera riga era letta come commento!

      Fortunatamente quindi sono riuscito a provare il tutto, anche grazie ad amici che mi hanno fatto il favore di hostare il sito per qualche ora.

      admin · 9 Gennaio 2011 alle 21:51

      Grazie per aver indicato la soluzione al suo problema, probabilmente utile a chi si trova nella stessa situazione.

Angelo · 26 Gennaio 2011 alle 13:10

Buon giorno,
Sono un nuovo utente ed inesperto utilizzatore di joomla,
premesso ciò, ho cercato di seguire le indicazioni riportate sopra.
Sono riuscito ad inserire in un articolo del mio sito il form di contatto, ma quando invio il tutto mi da il seguente errore:

503 Service Unavailable
The server is temporarily busy, try again later! Powered By LiteSpeed Web Server
LiteSpeed Technologies is not responsible for administration and contents of this web site!
Grazie per l’aiuto che vorrete fornirmi

luke · 4 Maggio 2011 alle 20:12

non riesco a risolvere il problema che aveva interessato e cioè:
una volta compilato il modulo, mi si apre questo:

Il messaggio non è stato inviato

Compila tutti i campi obbligatori!
”; } // verifica indirizzo email elseif(!ereg(”^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,3})$”, $email)) { echo “
Il messaggio non è stato inviato

L’indirizzo email indicato non è valido!
”; } else { // invio del messaggio mail($receiverMail, $subject, $msgformat, “From: $name ”); echo “
Il messaggio e’ stato inviato!

Riceverai una risposta il prima possibile!
”; } ?>

da che può dipendere?? ho controllato tutto quello che è stato scritto dopo….. boh!! 😉

    admin · 4 Maggio 2011 alle 20:53

    Controlla i ”
    ed eventuali errori di battitura

      luke · 5 Maggio 2011 alle 10:59

      controllati sono giusti ma il problema è un altro….
      nonostante paghi il dominio €35+iva non ho il supporto php…
      grazie per la risposta!!! Buon lavoro 🙂

roberto · 13 Dicembre 2011 alle 19:35

Buona sera!
Ho trovato queste informazioni e devo dire che a parte qualche problemino iniziale, tutto va alla grande! Complimenti.
Mi serviva sapere però 3 cose:
1) Come si fa a compilare il campo oggetto in maniera tale che una volta inviata sulla casella di posta non mi compaia (nessun oggetto)
2)è possibile avere una schermata graficamente più accattivante una volta avvenuto il corretto invio invece della pagina bianca?
3)Dopo inviato e ritornando alla form…come è possibile far si che i campi siano tutti puliti?

Non so se ho esagerato che le domande… ma mi saresti di grande aiuto.

Grazie

    admin · 13 Dicembre 2011 alle 21:04

    1) In teoria l’oggetto è preso dal campo oggetto quindi probabilmente c’è qualche errore nel codice il quale non trasferisce il dato.

    2) Per la grafica basta avere minime conoscenze di PHP HTML e CSS. La personalizzazione è possibile e deve essere eseguita nel seguente:
    echo “

    Il messaggio e’ stato inviato!

    Riceverai una risposta il prima possibile!

    3) la pulizia dei campi può essere fatta attraverso javascript :
    function clearForms()
    {
    var i;
    for (i = 0; (i < document.forms.length); i++) { document.forms[i].reset(); } } Di conseguenza richiamare la funzione onUnload="clearForms()

johnks · 25 Gennaio 2012 alle 12:50

Ciao…scusa il disturbo ho provato questo form…compilo i dati e tutto ma quando faccio la prova con dreamweaver mi da questo errore

Errore 6 (net::ERR_FILE_NOT_FOUND): Impossibile trovare il file o la directory.

forse devo prima caricarlo su server???

grazie in anticipo

    admin · 5 Febbraio 2012 alle 19:41

    Certamente sul server interpreta il php a differenza del locale a meno che non si usi un wamp / lamp

StefyStef · 22 Febbraio 2012 alle 16:14

Salve…
ho provato questo form,ho compilato tutti i dati come da te indicato. Ho caricato la pagina sul server (che supporta php), solo che quando premo Invia il browser mi dice che la pagine non è stata trovata.
Come posso risolvere??

    StefyStef · 22 Febbraio 2012 alle 17:29

    Ho risolto…ma perchè mi arriva come Posta Indesiderata?

      admin · 23 Febbraio 2012 alle 00:50

      Dipende dal domino associato

giorgio · 28 Aprile 2012 alle 20:45

Grazie mille perfetto!!!
Scusami come si può importare nella mail l’ip della persona che compila la form?

    admin · 29 Aprile 2012 alle 20:25

    Può usare $ip=@$REMOTE_ADDR;

      Giorgio · 7 Maggio 2012 alle 14:54

      Grazie ancora uuna volta per le indicazioni.

      Ti volevo chiedere dopo aver letto il messaggio:

      “Il messaggio e’ stato inviato!

      Riceverai una risposta il prima possibile!”

      come si può ritornare su una pagina del mio sito?

      Giorgio

      admin · 15 Maggio 2012 alle 20:29

      E’ possibile tramite la funzione php header location, come esempio
      header(‘Location: https://www.tuosito.com/pagina.html‘);

giorgio · 29 Aprile 2012 alle 12:58

Come si potrebbe inserire il captcha e come vanno modificati i file html e invia.php?

Grazie mille 😀

manu · 9 Giugno 2012 alle 20:55

non ho capito qual’è il formato del documento vuoto per i contatti

Manuel · 17 Ottobre 2012 alle 14:24

salve, ho seguito passo passo la sua guida, ma quando clicco sul pulsante “Invia!” non me la fare arrivare per quale motivo??
Ho Gmail.

Armando · 1 Ottobre 2015 alle 13:50

Grazie, funziona correttamente. E’ possibile aggiungere un altra email di destinazione?

Grazie

I commenti sono chiusi.