- Home
- Categorie
- Coding e Sistemistica
- PHP
- [Tutorial] Gestione di un form mail semplice
-
Ciao,
questo form mi è stato utile, sul primo sito dove l'ho riprodotto funziona benissimo, poi ho provato a farne uno uguale identico in un'altro sito e improvvisamente non funziona più ho copiato e in collato il codice ho tenuto gli stessi nomi dei campi e tutto ho cambiato solo la mail solo che non funziona potete aiutarmi?
-
Ciao sbabe e benvenuto nel forum GT.
Certo che i nomi dei file siano giusti ed anche i percorsi?
Nel caso prova a postare il codice e vediamo dove potrebbe essere il problema.
-
Ok questa è la parte di html
[html]<form action="messaggio.php" method="post" id="modulo">
Il Suo indirizzo e-mail*<br />
<label>
<p> <input name="mail" type="text" id="mail" /><br /></p>
</label>Messaggio* <br />
<p><textarea name="body" cols="30" rows="5" id="body"></textarea> <br /></p>
<label>
<input type="submit" name="submit" id="submit" value="Invia" /> </label></form> [/html]
Mentre questa è la parte di php
[php]<?php
// indirizzo di chi riceve la mail è sottolineato ma nel codice non sottilineatelo
if ((trim($_POST['mail']) != "") && (trim($_POST['body']) != "")) { //questo fa si che se i campi "oggetto" e "messaggio" sono vuoti la form non invia nessuna mail
$to = "[email protected]";
$headers = "From: " . $_POST['mail'] . "\n";// corpo messaggio
$body = "Messaggio dal sito:\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 .= "testo: " . trim(stripslashes($_POST["body"])) . "\n"; //messaggio
// invio mail
mail($to, $subject, $body, $headers); // SE L'INOLTRO E' ANDATO A BUON FINE...echo "<center>La mail è stata inviata con successo. Grazie per averci contattato</center>";
} else {// altrimenti
echo "<center>Deve compilare la form prima di inviare.</center>";}
?>[/php]
Comunque penso di aver sbagliato qualcosa nel php solo che non capisco cos'è se potete aiutarmi mi fate un favore grazie.
-
Vedo che manca l'oggetto della mail, intanto modifica il file messaggio.php così:
[php]<?phpif ((trim($_POST['mail']) != "") && (trim($_POST['body']) != "")) {
$to = "[email protected]";
$headers = "From: " . $_POST['mail'] . "\r\n";
$subject = "Oggetto della mail";// corpo messaggio
$body = "Messaggio dal sito:\n\n";$body .= "Inviata da: " . trim(stripslashes($_POST["mail"])) . "\n";
$body .= "testo: " . trim(stripslashes($_POST["body"])) . "\n"; //messaggio
mail($to, $subject, $body, $headers);
echo "<center>La mail è stata inviata con successo. Grazie per averci contattato</center>";
} else {// altrimenti
echo "<center>Deve compilare la form prima di inviare.</center>";}
?> [/php]Dato che usi una casella alice ti consiglio di controllare la casella dalla webmail e controllare la cartella posta indesiderata, probabile che viene considerata spam e che non te la fa scaricare dal client.
-
L'oggetto non c'è perché non ho messo il campo oggetto va messo lo stesso?
-
Niente ho provato ad aggiungere il subject però quanndo clicco su invia mi viene fuori una pagina bianca non mi viene fuori il messaggio di errore
-
Dopo tre anni dall'apertura di questo post, sono qui a parlare di questo form contatti molto utile, perchè lo sto utilizzando sul mio sito.
Veniamo al problema: lo script va alla grande, ricevo le mail, ed ho aggiunto altri elementi a quelli presenti nello script (menu a tendina e checkbox) che funzionano.
Allora che vuoi? Direte voi
Volevo migliorarlo, aggiungendovi un redirect ad una pagina del sito, qualche secondo dopo aver visualizzato il messaggio di avvenuto inoltro dei dati. Preferibilmente questa pagina potrebbe essere sempre quella dei contatti, però con i dati azzerati.
Il problema è che non ne capisco molto di php...:?
Che ne pensate?
Chissà se ci sarà qualcuno che leggerà questo msg dopo così tanto tempo...
spero di si :).Cmq grazie a pickadilly e a tutti, siete fantastici
BluesMan
-
Credo di aver risolto.
Per chi avesse bisogno:è 1 redirect interno al sito che avviene dopo 3 secondi
ho inserito nell'<head> della pagina invio.php questa stringa:<meta http-equiv="refresh" content="3;URL=pagina.html" />
ciao a tutti.
BluesMan
-
@BluesMan said:
Credo di aver risolto.
Per chi avesse bisogno:è 1 redirect interno al sito che avviene dopo 3 secondi
ho inserito nell'<head> della pagina invio.php questa stringa:<meta http-equiv="refresh" content="3;URL=pagina.html" />
ciao a tutti.
BluesMan
Secondo me non ti conviene molto perchè se uno si addormenta mentre scrive sulla tastiera proprio all'ultimo textinput gli si ricarica la pagina e perde tutte le info...
-
Si in effetti, come metodo è 1 po drastico, però è sempre meglio della pagina di "messaggio inoltrato" statico, che ti costringe a tornare indietro manualmente.
Comunque, accetto qualsiasi seggerimento :D.
Hai qualche idea?Ciao
BluesMan
-
Ragazzi avrei bisogno di una mano!
Ho utilizzato lo script da voi proposto. La mail la invia, ma quando la ricevo tutti i campi sono vuoti (ovvero "")! Ho tolto l'if iniziale (farò dopo una validazione lato client) altrimenti mi andava subito nel ramo else. Secondo voi da cosa può dipendere?
-
Ciao! Io sto provando ad usare il form che c'è nella prima pagina di questo post e funziona tutto alla grande.
Vorrei solo sapere come faccio a far si che oltre all'indirizzo che ho messo nel campo "$to=", arrivi una mail anche all'indirizzo di chi si registra.
Ho provato a scrivere "$to= $mail;" ma non va...Mi potete aiutare?
-
Devi ripetere l'istruzione mail 2 volte e impostare come destinatario di una delle 2 l'indirizzo del mittente.
-
Accidenti che velocità! Grazie per la risposta.
Scusa ma non ho capito, io ho scritto:$to = " [email protected], $mail ";
e vorrei che in automatico recuperasse l'indirizzo email che chi si iscrive ha scritto nel campo "mail" e gli mandasse pure a lui un'email come quella che ricevo io, è possibile?
Grazie ancora.
-
Perdonatemi ma io non so praticamente nulla di php... Qualcuno mi potrebbe scrivere esattamente che devo mettere?
Ho provato a mettere solo "$to = $mail" ma non mi arriva nessuna email all'indirizzo con cui mi registro...
-
Un'altra cosa, qualcuno mi sa spiegare perchè se aggiungo:
$bcc = "[email protected]";
non mi invia nulla alla mail in copia nascosta?
cosa sbaglio?
-
Buonasera a tutti!!!
Perché io ricevo come errore:
Warning: mail() [function.mail]: SMTP server response: 501 5.5.4 Invalid Address in D:\inetpub\webs\hotelmiamijesoloit\invio.php on line 27
La mail è stata inviata con successo. Grazie per averci contattato???
Grazie!
-
Posta il codice dell'invio della mail.
-
Scusate ho sistemato tutto, grazie a pikadilly...
e anch'io come Fante vorrei capire come si invia il form a due indirizzi email diversi...
Grazie!!!
-
@borghe said:
e anch io come Fante correi capire come si invia il form a due indirizzi email diversi...
Nella variabile $to metti gli indirizzi separati dalla virgola...Se non vuoi far sapere a tutti i vari destinatari devi ripetere il codice per ogni indirizzo diverso.