Errore form invio mail+php

Francesco Polese

Utente Attivo
4 Mar 2015
30
0
0
31
Sacile
francescopolese.it
Ciao a tutti! E' da giorni che non riesco a far funzionare un semplice form html+php o meglio la mail arriva ma vuota :crying: come se le variabili passate in post non ricevessero niente..
Questo è l'html:
HTML:
<div class="status alert alert-success" style="display: none"></div>

<form id="main-contact-form" class="contact-form" name="contact-form" method="post" action="sendemail.php">

	<div class="form-group">

		<input type="text" name="name" class="form-control" required="required" placeholder="Nome">
        </div>
        <div class="form-group">
                <input type="email" name="email" class="form-control" required="required" placeholder="Email">
        </div>
        <div class="form-group">
                <textarea name="message" id="message" required="required" class="form-control" rows="4"         placeholder="Il tuo messaggio"></textarea>
        </div>                        
        <div class="form-group">
                <input type="submit" class="btn btn-primary pull-right" value="Invia">
        </div>
</form>	       
</div>

Quando premo submit dovrebbe andare al file sendemail.php ma non succede niente, e nel primo div non mi esce neanche "grazie per aver inviato il messaggio" ma solo uno spazio bianco vuoto.
Ecco il listato php:
PHP:
<?php

	header('Content-type: application/json');

	$status = array(

		"Grazie per averci contattato!"

	);



    $name = @trim(stripslashes($_POST['name'])); 

    $email = @trim(stripslashes($_POST['email'])); 

    

    $message = @trim(stripslashes($_POST['message'])); 



    $email_from = $email;

    $email_to = 'info@thekrills.com';



    $body = "Name: ".$name."\n\n"."Email: ".$email."\n\n"."Info dal sito the     krills"."\n\n"."Message:".$message;



    $success = @mail($email_to, 'Info dal sito Krills', $body, 'From: <'.$email_from.'>');



    echo json_encode($status);

    die;

?>

Non so davvero più dove sbattere la testa anzi mi rendo conto che probabilmente è una cazzatina, ma davvero non ne vengo fuori :boxing:
Grazie in anticipo a chiunque sappia aiutarmi!
 
ho modificato

PHP:
// header('Content-type: application/json');
$status = "Grazie per averci contattato!";

$success = @mail($email_to, 'Info dal sito Krills', $body, 'From: <'.$email_from.'>'); 
if ($success) print "<b>MESSAGGIO INVIATO</b>";
else  print "<b>ERRORE : MESSAGGIO NON INVIATO</b>";
echo "<br />".$status; 
die;

poi ho inserito

PHP:
ini_set("SMTP"     ,$eM_Host);
ini_set("smtp_port",$eM_Port);
ini_set("username" ,$eM_Username);
ini_set("password" ,$eM_Password);

per il mio mail provider ho dovuto mettere

PHP:
$email_from = $eM_Username

la mail é arrivata con il contenuto atteso

il testo "ERRORE : MESSAGGIO NON INVIATO" puoi gestirlo nel log di php (consiglio)
 
ho modificato

PHP:
// header('Content-type: application/json');
$status = "Grazie per averci contattato!";

$success = @mail($email_to, 'Info dal sito Krills', $body, 'From: <'.$email_from.'>'); 
if ($success) print "<b>MESSAGGIO INVIATO</b>";
else  print "<b>ERRORE : MESSAGGIO NON INVIATO</b>";
echo "<br />".$status; 
die;

poi ho inserito

PHP:
ini_set("SMTP"     ,$eM_Host);
ini_set("smtp_port",$eM_Port);
ini_set("username" ,$eM_Username);
ini_set("password" ,$eM_Password);

per il mio mail provider ho dovuto mettere

PHP:
$email_from = $eM_Username

la mail é arrivata con il contenuto atteso

il testo "ERRORE : MESSAGGIO NON INVIATO" puoi gestirlo nel log di php (consiglio)

Ciao grazie per il tuo contributo. Questo è il mio attuale php seguendo i tuoi consigli. Ma adesso la mail proprio non arriva :D Giuro di non aver mai avuto così tanti problemi su un form mail come sta volta
PHP:
$status = "Grazie per averci contattato!"; 
	 $name = @trim(stripslashes($_POST['name'])); 

    $email = @trim(stripslashes($_POST['email'])); 

    

    $message = @trim(stripslashes($_POST['message']));
    $body = $name."\n\n".$message;
	 ini_set("mail.thekrills.com",$eM_Host); 
	 ini_set("25",$eM_Port); 
	 ini_set("user@miamail" ,$eM_Username); 
	 ini_set("passmiamail" ,$eM_Password); 	 
	 $email_from = $eM_Username;
	 $success = @mail($email_to, 'Info dal sito Krills', $body, 'From: <'.$email.'>');  
	 if ($success) print "<b>MESSAGGIO INVIATO</b>"; 
	 else  print "<b>ERRORE : MESSAGGIO NON INVIATO</b>"; 
	 echo "<br />".$status;  
	 die;
 
ciao
puo essere una stupidaggine quella che dico, ma dove valorizzi la variabile $email_to?

Azz... Vedi che a stare troppo sopra il problema mi perdo su stupidate?! Ora l'ho valorizzata ma ancora non arriva niente..
PHP:
<?php

	// header('Content-type: application/json');

	 $status = "Grazie per averci contattato!";  
     $name = @trim(stripslashes($_POST['name']));  

    $email = @trim(stripslashes($_POST['email']));  

     

    $message = @trim(stripslashes($_POST['message'])); 
    $body = $name."\n\n".$message; 
     ini_set("mail.thekrills.com",$eM_Host);  
     ini_set("25",$eM_Port);  
     ini_set("info@thekrills.com" ,$eM_Username);  
     ini_set("miapasw" ,$eM_Password);       
     $email_from = $eM_Username; 
     $success = @mail($email_from, 'Info dal sito Krills', $body, 'From: <'.$email.'>');   
     if ($success) print "<b>MESSAGGIO INVIATO</b>";  
     else  print "<b>ERRORE : MESSAGGIO NON INVIATO</b>";  
     echo "<br />".$status;   
     die;  



    

?>
 
ciao
prova a fare questa cosa stupida e vedi se funzia
PHP:
<?php
$name = "pinco"; 
$email = "info@pinco.it";
$body="nel mezzo di camin di nostra vita mi ritrovai per una selva oscura...che l'email era sparita";
$email_to="la_tua_amail@sofonisba.it"
if(mail($email_to, 'Info dal sito Krills', $body, 'From: <'.$email.'>')){
	echo "invio OK";
}else{
	echo "invio KO";
}
?>
poi un paio di consigli:
1. non usare il silent, la @, gli errori devono essere eliminati e non nascosti
2. usa la classe phpmailler risolve diversi problemi
 
Niente non da segni di vita! Ma il problema è che se io imposto action="sendemail.php" non dovrebbe andarmi al file php quando premo il submit del form? Perchè ora quando schiaccio non succede niente! Cioè al file sendemail secondo me manco ci arriva!
 
Altra cosa stupida, sicuramente, ma nella action="sendmail.php" il percorso è corretto, cioè il file php è nella stessa cartella del file con il form o ad esempio in una sotto cartella?
Ripeto sicuramente è una banalità, ma spesso sono prorpio queste banalità che ci sfuggono
 
non ho guardato le altre risposte, in ogni caso hai scambiato qualche valore soprattutto nelle ini_set,

ini_set potrebbero essere superflue se il tuo php.ini é già settato con i parametri giusti
quindi esegui una prima volta, commentandoli, altrimenti inserisci i valori per te validi
ti posto l'intero codice che a me funziona correttamente,
PHP:
<?php 
ini_set("SMTP"     ,"out.alice.it");
ini_set("smtp_port","25");
ini_set("username" ,"CAMBIAMI@alice.it");
ini_set("password" ,"CAMBIAMI");

// header('Content-type: application/json');

$status = "Grazie per averci contattato!";

$name = trim(stripslashes($_POST['name']));  
$email = trim(stripslashes($_POST['email']));  
$message = trim(stripslashes($_POST['message']));  
$email_from = $email;

$email_to = 'info@thekrills.com'; 

$body = "Name: ".$name."\n\n"."Email: ".$email."\n\n"."Info dal sito the krills"."\n\n"."Message:".$message; 

$success = @mail($email_to, 'Info dal sito Krills', $body, 'From: <'.$email_from.'>'); 
if ($success) print "<b>MESSAGGIO INVIATO</b>";
else  print "<b>ERRORE : MESSAGGIO NON INVIATO</b>";

echo "<br />".$status; 
die; 
?>
Cattura.PNG
 
Ultima modifica:
Confermo che il file index.html e sendemail.php sono nella stessa cartella (root). Potrebbe essere forse che devo salvare il file index.php invece che .html? Ora sono fuori casa ma dopo potrei provare. Qualcuno ha esperienza in merito?
Grazie!
 
Non credo, se in index.html non c'è codice php, l'estensione non deve essere per forza .php
 
non ho guardato le altre risposte, in ogni caso hai scambiato qualche valore soprattutto nelle ini_set,

ini_set potrebbero essere superflue se il tuo php.ini é già settato con i parametri giusti
quindi esegui una prima volta, commentandoli, altrimenti inserisci i valori per te validi
ti posto l'intero codice che a me funziona correttamente,
PHP:
<?php 
ini_set("SMTP"     ,"out.alice.it");
ini_set("smtp_port","25");
ini_set("username" ,"CAMBIAMI@alice.it");
ini_set("password" ,"CAMBIAMI");

// header('Content-type: application/json');

$status = "Grazie per averci contattato!";

$name = trim(stripslashes($_POST['name']));  
$email = trim(stripslashes($_POST['email']));  
$message = trim(stripslashes($_POST['message']));  
$email_from = $email;

$email_to = 'info@thekrills.com'; 

$body = "Name: ".$name."\n\n"."Email: ".$email."\n\n"."Info dal sito the krills"."\n\n"."Message:".$message; 

$success = @mail($email_to, 'Info dal sito Krills', $body, 'From: <'.$email_from.'>'); 
if ($success) print "<b>MESSAGGIO INVIATO</b>";
else  print "<b>ERRORE : MESSAGGIO NON INVIATO</b>";

echo "<br />".$status; 
die; 
?>
Vedi l'allegato 2968

Ok adesso la mail arriva ma vuota :gun: tu hai usato il mio form html?
 
Comunque riguardando adesso il form html, la textarea non ha valorizzat0 l'attributo name="message", non c'è proprio, al suo posto c'è id="message"

edit:
come non detto..... l'ho vista ora, mi era sfuggita
 
ciao
una cosa: vuota o non arriva?
se arriva vuota metti dei var_dump per verificare se i campi di input vengono ricevuti e se si come
PHP:
<?php
//...
echo "<pre>";
var_dump($_POST['name']);
var_dump($_POST['email']);
var_dump($_POST['message']);
echo "</pre>";
$name = trim(stripslashes($_POST['name']));  
$email = trim(stripslashes($_POST['email']));  
$message = trim(stripslashes($_POST['message']));  
//....
?>
che la index sia php o html come diceva rikk73 non c'entra nulla, salvo che tu non metta il form e l'invio nella stessa pagina, allora deve essere php.
 
La mail arriva vuota ma il var_dump non stampa nulla perchè il problema secondo me è alla fonte. Quando in un form html metti action="sendemail.php" method="post", già con questa configurazione quando premo su submit dovrebbe andarmi alla pagina sendemail.php concordate? Ecco qui invece quando premo invio non va da nessuna parte e arriva una mail vuota. Se volete provare andate su www.thekrills.com sezione contatti.
 
ciao
susa ma mi sembra che tu stai dicendo un controsenzo.
ripartiamo:
tu hai una pagina index.html con un form che punta ad una pagina sendmail.php, giusto?
da quello che dici premendo il submit ti arriva una email vuota, giusto?
se al submit non trovasse la pagina sendmail.php ti darebbe l'errore "pagina non trovata", ma se ti arriva l'email (anche se vuota) vuol dire che la pagina sendmail.php viene chiamata, trovata e processa, per quello che può, i dati ed invia
per prima cosa verifica che i nomi dei campi di input siano perfettamente uguali ai nomo delle variabili $_POST, come detto, se l'email viene inviata, se metti i var_dump che ti ho indicato e appena prima dei vari stip qualcosa devi vedere.
se i campi non vengono inviato ottieni dal var_dump la scritta NULL
 
Ed è proprio qui che non mi capisco! E' vero la mail arriva vuota quindi la funzione mail() viene chiamata. Ma se all'interno del file sendemail.php scrivo ad esempio: echo "Ciao" la url nel browser rimane thekrills.com che è la index invece dovrebbe essere thekrills.com/sendemail.php no?
 
Ok adesso la mail arriva ma vuota tu hai usato il mio form html?
si ho usato il tuo form senza modifiche,
index.html chiama sendemail.php
index.html viene eseguito in windows con un "collegamento" (index)
Codice:
"C:\Program Files\Internet Explorer\iexplore.exe" [url]http://localhost/test_site/php/test/_FrancescoPolese/index.html[/url]

Cattura.PNG
 
Ultima modifica:
sendmail.php è il motore del tuo form di contatto, recupera (o almeno dovrebbe) i dati, li elabora come tu gli hai detto, invia la mail ma poi, inviata la mail cosa fa?

Il fatto che tu veda o voglia vedere http://......./sendmail.php nella url dipende, sintetizzando, da una scelta che puoi fare subito dopo l'invio della mail:

- una cosa cosa tipo header('location: index.html'); -> e quindi torni nell'index e non vedrai mail sendmail.php
- un output html o semplicemente echo "Bravo hai inviato la mail!!!!!" e quindi rimani in sendmail.php e la vedi nella url
 

Discussioni simili