Invio email
Lo script illustrato di seguito può essere utile a tutti coloro che hanno incontrato problemi con la creazione di un form per l’invio di mail
Si tratta di uno script di base, ma utile per capire i meccanismi.
Da questo punto in poi la parola a pikadilly che mi ha gentilmente inviato lo script e la sua descrizione.
“La domanda che spesso viene fatta è: “come faccio ad inviare un modulo
dalla mia pagina web alla mia mail?”, le risposte prevedono sempre la comparsa della parola “programmazione”. Di seguito vedremo un semplice script che permette di inviare una mail dal nostro sito alla nostra casella e-mail, funziona anche se la casella di posta è una webmail.
Anzitutto abbiamo due pagine che chiameremo:
“modulo.html”
“invio.php”
modulo.html conterrà la form in cui si inseriranno di dati, per esempio:
-E-mail
-Oggetto
-Messaggio
Per ogni campo sopracitato si deve sapere il nome, name, tipo, type, e id, che rimane id.
quindi il codice sarà così ad esempio per l’oggetto della mail.
<input name=”object” type=”text” id=”object” />
Vediamo la form nella pagina modulo.html nell’insieme:
-
<form method=“post” action=“invio.php” id=“modulo”>
-
<table>
-
<tbody>
-
<tr>
-
<td>Il Suo indirizzo e-mail*</td>
-
<td><label> <input name=“mail” id=“mail” />
-
</label></td>
-
</tr>
-
<tr>
-
<td>Oggetto*</td>
-
<td><label> <input name=“object” id=“object” />
-
</label></td>
-
</tr>
-
<tr>
-
<td>Messaggio*</td>
-
<td> <textarea cols=“30″ rows=“5″ name=“body” id=“body”></textarea></td>
-
</tr>
-
<tr>
-
<td><label></label></td>
-
<td><label><input name=“submit” type=“submit” id=“submit” /> <input name=“cancella” type=“reset” id=“cancella” />
-
</label></td>
-
</tr>
-
</tbody>
-
</table>
-
</form>
Ogni campo di testo ha un suo id che verrà trasmesso alla pagina invio.php che processerà il tutto e spedirà i risultati all’indirizzo mail che andremo a specificare in seguito.
Come si può notare, all’apertura del tag <form> è stato aggiunto:
action=”invio.php” method=”post”
“Action” determina l’azione, ovvero invia ad invio.php tutto quello contenuto nel modulo, “post” indica invece il metodo.
Passiamo alla pagina invio.php
In invio.php ponete questo codice tra i tag body:
-
<?php
-
-
// indirizzo di chi riceve la mail è sottolineato ma nel codice non sottilineateloif ((trim($_POST[’object’]) != “”) && (trim($_POST[’body’]) != “”)) { //questo fa si che se i campi “oggetto” e “messaggio” sono vuoti la form non invia nessuna mail
-
-
$to = ” \n nome@dominio.it Indirizzo e-mail protetto dal bots spam , deve abilitare Javascript per vederlo “;
-
-
$headers = “From: “ . $_POST[‘mail’] . “\n“;
-
-
// soggetto della mail
-
-
$subject = “Modulo proveniente da www.tuosito.it”; // corpo messaggio
-
-
$body = “Contenuto del modulo:\n\n“;
-
-
$body .= “Inviata da: “ . trim(stripslashes($_POST["mail"])) . “\n“; //indirizzo e-mail che manda la mail, come si vede riprende l’id del campo destinato all’inserimento della mail del mittente
-
-
$body .= “Oggetto: “ . trim(stripslashes($_POST["object"])) . “\n“; //oggetto del messaggio
-
-
$body .= “testo: “ . trim(stripslashes($_POST["body"])) . “\n“; //messaggio
-
-
// invio mail
-
-
mail($to, $subject, $body, $headers); // SE L’INOLTRO E’ ANDATO A BUON FINE…
-
-
echo “La mail è stata inviata con successo. Grazie per averci contattato”;
-
-
} else {// altrimenti
-
-
echo “Deve compilare la form prima di inviare.”;
-
-
}
-
-
?>
Inserendo questo codice nella pagina invio.php e settando la vostra mail al posto di ” nome@dominio.it” riceverete una mail dalla vostra web form.
Una cosa fondamentale è la codifica dei caratteri.
Per ricevere una mail priva di lettere strane tipo questa “è” o apostrofi preceduti da ” \” è necessario che la codifica dei caratteri nei metatag sia impostata così:
-
<meta http-equiv=“Content-Type” content=“text/html; charset=iso-8859-1″ />
Alcuni programmi di defaultl mettono:
-
<meta http-equiv=“Content-Type” content=“text/html; charset=utf-8″ />
Fonte: GiorgioTave Forum












Martedì, 15 Gennaio 2008 at 16:15
ora provo se funziona…..poi vi farò sapere
Mercoledì, 16 Gennaio 2008 at 12:36
forte :D
forse sarebbe meglio cosi:
mail($to, $subject, $body, $headers, “-femailsegnalazioneerrore”);
/* dove -f dice che bisogna inviare un rapporto in caso di errore e emailsegnalazioneerrore è dove questo rapposto viene spedito così si può sapere sempre se un email viene inviata o meno */
Martedì, 29 Gennaio 2008 at 13:17
Salve…
Vorrei sapere se all’hosting free di netson è abilitato il servizio DNS per mandare i messaggi dal form..
Grazie..