- Home
- Categorie
- Coding e Sistemistica
- PHP
- help form invio mail
-
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]";
-
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...
-
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.
-
Hai un errore nell'if..
Quello che hai inserito nell'if non è una condizione.Fa cosi:
[php]
if( mail($to, $subject, $message, $headers) )
{
print "mail inviata";
}[/php]