- Home
- Categorie
- Coding e Sistemistica
- PHP
- [Tutorial] Gestione di un form mail semplice
-
[Tutorial] Gestione di un form mail semplice
Invio mail da web form by pikadilly
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
-MessaggioPer 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:**
[PHP]<form action="invio.php" method="post" id="modulo">
<table>
<tr>
<td>Il Suo indirizzo e-mail*</td>
<td><label>
<input name="mail" type="text" id="mail" />
</label></td>
</tr>
<tr>
<td>Oggetto*</td>
<td><label>
<input name="object" type="text" id="object" />
</label></td>
</tr>
<tr>
<td>Messaggio*</td>
<td>
<textarea name="body" cols="30" rows="5" id="body"></textarea>
</td>
</tr>
<tr>
<td><label></label>
</td>
<td><label>
<input type="submit" name="submit" id="submit" value="Invia" /> <input type="reset" name="cancella" id="cancella" value="Ripristina" />
</label></td>
</tr>
</table>
</form>
[/PHP]
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]<?php
// indirizzo di chi riceve la mail è sottolineato ma nel codice non sottilineatelo
if ((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 [email protected] 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.";}
?>
[/PHP]Inserendo questo codice nella pagina invio.php e settando la vostra mail al posto di " [EMAIL="[email protected]"][email protected][/EMAIL]" 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ì:[PHP]
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
[/PHP]Alcuni programmi di defaultl mettono:
[PHP]<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />.[/PHP]
Grazie pikadilly
-
Io invece ringrazio Gmassi e Adriano_Bari per avermi aiutato a risolvere il problema degli accenti e degli apostrofi nelle mail che si ricevono dalla web form.
Grazie Mz per l'inserimento
-
ma cerchero' di contribuire con piccole cose...ciao
-
scusate l'ignoranza sono nuova.... ma tutto questo script lo si incolla in un' unica pagina semplice di html ?
-
Ciao Raffa,
la pagina che contiene il form può anche essere una semplice pagina html ma la seconda (invio.php) deve essere .php.Tu inserisci tutto il codice php nella pagina .php (scusa le ripetizioni).
-
Ciao, non riesco a far funzionare il mio form,, credo che c'è qualche problema su su invio.php?
prima dell'indirizzo email c'è una n...
quando provo a inviare i dati dice invio dati riuscito ma non mi arriva nessuna e-mail.......:():<?php
// indirizzo di chi riceve la mail è sottolineato ma nel codice non sottilineatelo
if ((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 E-MAIL MIO SITO.net Indirizzo e-mail protetto dal bots spam , deve abilitare Javascript per vederlo ";
$headers = "From: " . $_POST['mail'] . "\n";
// soggetto della mail
$subject = "Modulo proveniente da NOME MIO SITO.net";// 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.";}
?>
</body>
</html>
-
lo utilizzi in localhost?
magari non hai il client smtp attivo
prova in remoto
-
ho caricato i files su internet e da internet che faccio la prova
-
Ho capito il problema...forse...
Hai scaricato lo zip o hai copiato e incollato quello scritto nel primo thread?Probabilmente, se hai copiato e incollato il primo post del thread hai copiato anche questa dicitura:
Indirizzo e-mail protetto dal bots spam
che si trova accanto a l'indirizzo e-mail.Togli quella frase che non fa parte dello script e riprova, facci sapere.
-
GRAZIEEEEEEEEE FUNZIONAAAAAAAAAA cry:
CIAO..
-
Il form funziona, ho aggiunto altri cmpi coma nome e cognome, ma quando leggo la e-mail nn si vedono i nuovi campi... eppure ci sono gli id ..... ho aggiunto questo: ma nn arriva, ho cantato vittoria troppo presto
<tr>
<td><strong>Nome*</strong></td>
<td><label>
<input name="nome" type="text" id="nome" size="100" />
</label></td>
</tr>
<tr>
<td><strong>Cognome*</strong></td>
<td><label>
<input name="cognome" type="text" id="cognome" size="100" />
</label></td>
</tr>
-
ALLA FINE HO CAPITO CHE DOVEVO MODIFICARE ANCHE IL FILE .PHP E FUNZIONA... ora una cosa vorrei fare ancora, a far scrivere obbligatoriamente ttt i dati.... cm si fa?
-
SONO RIUSCITO ANCHE A RENDERE OBBLIGATORIO TUTTI I CAMPI..... VI RINGRAZIO ANCORA TUTTI, PERCHE' SENZA DI VOI NN CE LA POTEVO MAI FARE... GRAZIE DAVVERO!
-
Bene,
in ogni caso nei thread utili c'era anche lo script su come fare una form mail con campi obbligatori.http://www.giorgiotave.it/forum/php-mysql/58050-esempio-form-per-invio-mail-con-controllo.html
-
Grazie Pikaciu! adesso però, avrei un'altro problemino............. :D, siccome sono un webmaster in via di estinzione, che nn conoscono in dettaglio la programmazione......... mi aiuteresti a creare una pagina dove un utente ci si può iscrivere avere subito una risposta via e-mail du benvenuto.. e se conosci qualcs di più professionale e carino possibile?
Grazie di cuore.
Davide smack
-
Allora siamo colleghi di sventura.
Purtroppo io non mi occupo di programmazione, ogni tanto provo a montare, degli script per le form mail e vengono fuori cose che funzionano.
Non saprei proprio come aiutarti. Probabilmente se apri un discorso a tema o fai una piccola ricerca nel forum php qualcosa puoi anche trovare.
Buon lavoro
-
ciao ragazzi,
il post è vecchio ma ho un problema.Non sono molto esperto di programmazione (me la cavo) ho fatto un sito internet e volevo inserirci una pagina di commenti per poi riceverli sulla mail.
Ho usato i 2 documenti (html e php) messi a disposizione nella prima spiegazione e HO MODIFICATO SOLO LA MAIL METTENDO LA MIA MAIL DI HOTMAIL.
Per fare una prova creo una pagina vuota scrivo ''valutazioni'' e lo collego ipertesto sulla pagina html.
- Carico la pagina vuota, il file html e il file php sul sito;
- Vado sul sito da web premo valutazioni mi apre la pagina impostata in html;
- Compilo premo invia e mi dice errore visualizzazione pagina.
Io da i 2 files scaricati non ho modificato nulla (solo la mail) ho lasciato le scritte che stavano in arancione.
Vi prego aiutatemi che ne ho urgente bisogno.
-
Salve, il codice funziona perfettamente, volevo sapere c'è un modo per inserire altre opzioni oltre a messaggio, oggetto e email?
-
Ciao zaghor82, cosa intendi per altre opzioni?
-
Ragazzi apposto ho già risolto, grazie.