Creare un form per l’invio di email dal proprio sito con Html e Php Stampa


Per un sito web è fondamentale che i propri utenti possano prendere contatto con il webmaster o la redazione. In questo tutorial vedremo come creare una pagina da cui inviare email sfruttando html e php, senza l’utilizzo di client di posta o webmail.

Per inviare una email da un sito web possono essere usati due metodi.

Il primo è quello di usare un comune link in questo modo:

<a href="mailto:indirizzo@email.it">indirizzo@email.it</a>

che produrrà il seguente risultato:

indirizzo@email.it

Questo è il metodo più semplice per inviare email dal proprio sito, ma non il più efficace. Infatti l’indirizzo del destinatario, che è mostrato in chiaro è facilmente utilizzabile da programmi automatici per l’invio di spam.

Il secondo metodo utilizza php oltre al consueto linguaggio html, vediamo come:

La prima cosa da fare è creare un form attraverso il quale gli utenti inseriranno i propri dati. Nel nostro esempio chiederemo al navigatore di inserire il proprio nome, l’email e un messaggio.

Il codice da utilizzare per creare un form che svolga questa funzione è il seguente:

<form name="mailform" method="post" action="<?=$_SERVER['PHP_SELF'] ?>">
Nome
<input type="text" name="nome" />
Email
<input type="text" name="email" />
<textarea name="messaggio" cols="10" rows="10">Inserisci il tuo messaggio qui..</textarea>
<input type="submit" name="Submit" value="Invia!" />
<input type="reset" name="Submit2" value="Cancella" />
</form>

Analiziamo il codice:

<form name="mailform" method="post" action="<?=$_SERVER['PHP_SELF'] ?>">

è il tag dentro al quale dobbiamo inserire gli elementi da inviare. name indica il nome del form (mailform), method è il modo in cui vengono inviate le variabili (post ovvero non visibili nell’url) infine action definisce la pagina a cui inviare i dati raccolti (<? $_SERVER['PHP_SELF'] ?> inviamo i valori alla stessa pagina in cui risiede il form).

<input type="text" name="nome" /> 

crea una casella di testo monoriga in cui scrivere, inquesto caso il nome e l’email. Gli attibuti type e name sono rispettivamente il tipo di campo (text) e il nome della variabile (nome e email) da inviare alla pagina php.

<textarea name="messaggio" cols="40" rows="5"></textarea>

crea un’area in cui e possibile scrivere il messaggio. Gli attributi name, cols e rows sono rispettivamente il nome della variabile (messaggio), il numero di colonne (40) e di righe (5) dell’area.

<input type="submit" name="Submit" value="Invia!" />

crea il bottone per inviare i dati, la variabile si chiama Submit e il suo valore sarà Invia! .

<input type="reset" name="Submit2" value="Cancella" />

crea il bottone che permette di resettare il contenuto del form.

Non ci resta che creare la parte in php che effettuerà il vero e proprio invio dell’email.

Link utili:



6 comments:

  1. Daniele Piras, 28. Dicembre 2008, 1:33

    Questo è il link della pagina che voglio inviare via e-mail una volta compilata:
    http://europeanfestival.altervista.org/form2.htm
    potreste dirmi cosa c’è che non funziona? grazie!

     
  2. TecnoPillole.com, 2. Gennaio 2009, 13:18

    Purtroppo la pagina html non è utile per identificare il problema.
    Devi mostrarci il codice sorgente (php).

     
  3. Angelo, 5. Gennaio 2009, 13:38

    potrebbe essere d’aiuto anche questo post Form Email

     
  4. Daniele Piras, 8. Gennaio 2009, 15:09

    [php]

    [/php]

     
  5. Derek, 3. Marzo 2010, 14:43

    Salve a tutti,
    volevo chiedere un cosa,
    quando invio un email con questo sistema arriva a destinazione correttamente ma c’è solamente il messaggio, non appare chi l’ha mandato e il nome di chi l’ha scritto.
    I campi del form riguardanti il nome e email non vendono spediti…
    il codice usato è quello descritto sopra.

    Grazie mille per qualsiasi info.

     
  6. TecnoPillole.com, 1. Luglio 2010, 15:07

    E’ necessario aggiungere le seguenti righe di codice:

    // Intestazioni aggiuntive
    $headers = 'From: Luca <luca@mail.com>' . "\r\n";
    //invio la mail
    $mail=mail("destinatario@email.it", "Oggetto email", $messaggio, $headers);
    
     

Scrivi un commento: