- Home
- Categorie
- Coding e Sistemistica
- PHP
- help form invio mail
-
help form invio mail
ciao a tutti
mi scuso per la domanda banale ma non ne vengo a capo e non sono riuscito a trovare script già fatti che siano ok per il mio caso.
vi spiego:
devo creare un form per invio mail da un sito
questo form ha i campi
nome, cognome, mail, messaggio
questo è l'html che ho creato<form method="post" action="mail.php"> <BR>
Nome <input type="text" id="nome"> <BR>
Cognome <input type="text" id="cognome"> <BR>
Email Mittente: <input type="text" id="email_mittente"> <BR>
Testo: <textarea id="messaggio"> </textarea> <BR>
<input type="submit" value="Invia Email"> <BR>
</form>il codice ph che ho utilizzato è questo:
<? $to = $_POST['[email protected]'];
$subject =
$email = $_POST['messaggio'];
$mailheaders = "From: " . $_POST['nome'] . " " . $_POST['cognome '] . " <> ";
$mailheaders .= "Reply-To:" . $_POST['email_mittente'] . " ";
mail($to, $subject, $email, $mailheaders); ?>ho fatto alcune prove inviando al mio indirizzo mail ma non ricevo nulla.
dove sbaglio?
mi farebbe comodo mettere anche dei controlli sulla mail e sui vari campi del form.
la parte subject è vuota perche vorrei scriverci "mail dal sito" ma non ho idea di come fare.potete cortesemente aiutarmi?
-
Hai provato a fare un echo delle variabili?
Prima della funzione mail(....), prova cosi...echo "$subject , $email , $mailheaders";
Se ti ritornano solo tre virgole separate da degli spazi allora vuol dire che le variabili sono vuote ancor prima di arrivare li.
-
ciao
ho modificato il codice per vedere gli errori in questo modo:
<?php
ini_set('display_errors',1);
error_reporting(E_ALL|E_STRICT);$to = $_POST['[email protected]'];
$subject = "";
$email = $_POST['messaggio'];
$mailheaders = "From: " . $_POST['nome'] . " " . $_POST['cognome '] . " <> ";
$mailheaders .= "Reply-To:" . $_POST['email_mittente'] . " ";
echo "$subject , $email , $mailheaders";mail($to, $subject, $email, $mailheaders);
?>mi restituisce i seguenti errori:
Notice: Undefined index:xxx @gmail.com in mailprova.php on line 13
Notice: Undefined index: messaggio in mailprova.php on line 15
Notice: Undefined index: nome in mailprova.php on line 16
Notice: Undefined index: cognome in mailprova.php on line 16
Notice: Undefined index: email_mittente in mailprova.php on line 17
-
Intanto il $to... gli assegni una variabile post che di sicuro non puo essere un valore... ma il nome del'id o name che era presente nel form che manda informazioni a questa pagina...
-
forse ho sbagliato e non ho capito
ma io $to non ci dovrrebbe andare la mia mail?
quella a cui deve arrivare il messaggio spedito dal form?
-
Allora $to prima di tutto è una variabile.
Concettualmente visto anche il nome, sicuramente ci va la tua mail, ma attenzione a come gli assegni il valore...$to = $_POST['[email protected]'];
Se fai cosi stai dicendo di assegnare alla variabile $to il valore di una variabile di tipo POST (mandata cioè dal form di prima) il cui nome/id è xxx @ gmail.com, invece credo che tu, almeno in questa variabile, gli debba assegnare una stringa diretta.
$to = "[email protected]";
-
Oltre agli errori già segnalati ve ne sono sfuggiti alcuni... primo fra tutti il fatto che hai confuso il campo id di ogni input type col name... prova a sostituire per esempio la stringa
id="email_mittente" con name="email_mittente" nelle varie input type e vedrai che tutto funzionerà a dovere!Nella seconda pagina
$email = $_POST['messaggio']; sarà quindi $email = $_POST['email_mittente'];
-
oraq è rimasto un solo errore
Notice: Undefined index: cognome in mailprova.php on line 16
, ddd , From: dd <> Reply-To:ddgrazie mille!
-
Vero!
E che lo avevo anche scritto nome/id mannaggia.
-
Mi sa che si tratta dello stesso tipo di errore, il nome della variabile POST deve avere lo stesso nome del campo name...
-
@marcocarrieri said:
Mi sa che si tratta dello stesso tipo di errore, il nome della variabile POST deve avere lo stesso nome del campo name...
Si esatto proprio così... infatti ho scritto che avresti dovuto correggerla per ogni input type da te inserita
-
si, c era uno spazio di troppo.
ora mi restituisce questo:
, ddd , From: dd dd <> Reply-To:dd
-
Se è quello che ti aspetti allora va bene....
Dipende da quello che hai scritto tu nei campi...Attenzione qua nel forum ad iniziare le frasi con le lettere maiuscole...
-
quello che mi restituisce è ok
ma la mail non la invia.e se volessi che mi restituisse messaggio inviato?
-
ho modificato lo script aggingendo un controllo di mail inviata o no
<?php
$to = "[email protected]";
$subject = "";
$email = $_POST['messaggio'];
$mailheaders = "From: " . $_POST['nome'] . " " . $_POST['cognome'] . " <> ";
$mailheaders .= "Reply-To:" . $_POST['email_mittente'] . " ";if(mail($to, $subject, $email, $mailheaders)){
print "mail inviata";
}
else{
print "mail NON inviata!";
}
?>solo che non la invia.
cosa potrebbe essere?
-
Qua nel forum per postare il codice usa l'apposito pulsante, cosi risulta tutto piu leggibile.
Da dove stai provando a fare questi test?
Da in locale?
Da un sito in internet?
-
certo, non mi ero accorto della sua esistenza.
lo sto provando da un server aruba.
ho provato a spedire una mail tramite il loro tool che fa vedere se il php.ini è configurato bene o meno e tutto funziona...
i file del form e dello script però non sono nella directory radice del sito.
-
Forse è sbagliata la sintassi che usi.
Tu usi questa.
mail($to, $subject, $email, $mailheaders)Mentre la sintassi giusta dovrebbe essere questa
$headers = 'From: tuamail' . "\r\n" . 'X-Mailer: PHP/' . phpversion(); mail($to, $subject, $message, $headers);
-
buongiorno!!!
ho modificato lo script in questo modo:[PHP]
<?php$to = "[email protected]";
$subject = "";
$email = $_POST['messaggio'];
$mailheaders = "From: " . $_POST['nome'] . " " . $_POST['cognome'] . " <> ";
$mailheaders .= "Reply-To:" . $_POST['email_mittente'] . " ";if(
$headers = 'From: MAIL ' . "\r\n" .
'X-Mailer: PHP/' . phpversion();
mail($to, $subject, $message, $headers);
){
print "mail inviata";
}
else{
print "mail NON inviata!";
}
?>
[/PHP]mi da questo errore:
Parse error: syntax error, unexpected ';' on line 23poi non capisco questa riga di codice [PHP]$headers = 'From: MAIL ' . "\r\n" .[/PHP]
poi spiegarmela?grazie mille
-
Attenzione alle maiuscole qua nel Forum.
Purtroppo non vedo la riga 23... Ma credo si tratti dell'if...
Porta fuori l'assegnazione dell'header che alla fine è una stringa.$headers = "From: MAIL \r\n X-Mailer: PHP/" . phpversion();
Dove al posto della parola mail metti la tua effettiva mail.
Questo dovrebbe far si che i sistemi antispam, buttino la mail generata da questa funzione nella cartella Spam.