non mi parte l' email

patriziou

Utente Attivo
12 Lug 2011
79
0
0
ciao a tutti ho ftt questio codice per poter inviare un gioco alla mia e-mail e ho ftt per una prima pagina questo codice html
HTML:
<form action="riuscito.php" method="post" target="_blank">
         Game Name: <br />

		 <input type='text' name='name' /><br />

         

         <br />



		 Descrizione<br />

		 <textarea name='desc' style='width: 300px;'></textarea><br />



		 Category: <br />

         

		 <select name='cat'>

         <option value="giochi di azione">giochi di azione</option><option value="giochi di volo">giochi di volo</option><option value="giochi classici" selected>giochi classici</option><option value="giochi al femminile">giochi al femminile</option><option value="giochi per bambini">giochi per bambini</option><option value="giochi di guerra">giochi di guerra</option><option value="giochi di auto">giochi di auto</option><option value="giochi di strategia">giochi di strategia</option><option value="giochi sparatutto">giochi sparatutto</option><option value="giochi di sport">giochi di sport</option><option value="giochi di moto">giochi di moto</option><option value="giochi di lotta">giochi di lotta</option><option value="giochi di carte">giochi di carte</option><option value="giochi di abilita">giochi di abilità</option>           
	  </select><br />



		 file gioco (.swf.dcr. ...)<br />

		 <input type="file" name="swf" /><br />



		 Immagine:<br />

		 <input type='file' name='thumb' />
		 <br />



		 Nome del creatore: <br />

		 <input type='text' name='authorname' /><br />
<br />
         E-mail: <br />

		 <input type='text' name='mail' /><br />
<br />

		 <button type="submit">Invia</button>
		 		 <br />




		</form>
e poi nella pagina per indicare che è riuscito il tutto ho ftt questo
PHP:
 <?php
	$email ="crashsito64@yahoo.it";
	$nome = $_POST['name'];
	$descrizione= $_POST['desc'];
	$categoria= $_POST['cat'];
	$file= $_POST['swf'];
	$immagine= $_POST['thumb'];
	$creatore= $_POST['authorname'];
	$mittente= $_POST['mail'];
mail($email,$nome,$descrizione,$categoria,$file,$immagine,$creatore,$mittente);
?>
allora non mi dà nessun errore però l' email non parte ho ftt la prova nn solo su server locale, ma anche in rete però non va qualcuno sa dirmi qual è il problema?
 
ho un piccolo problem ala strutttur per utilizzarephp mailer è questa
PHP:
<?
require_once("class.phpmailer.php");

$mail = new PHPMailer();
$mail->IsSMTP();                    // attiva l'invio tramiteSMTP
$mail->Host     = "mail.serverposta.it"; // indirizzo smtp
$mail->From     = "mittente@dominio.it";
$mail->FromName = "Nome Mittente";
$mail->AddAddress("destinatario@dominio.it");
$mail->IsHTML(true);  
$mail->Subject  =  $oggetto;
$mail->Body     =  $bodyhtml;
$mail->AltBody  =  $bodytxt;
$mail->AddAttachment("public/filename_1.zip"); 
if(!$mail->Send()){
	echo "Si è verificato un errore nell'invio della mail";
}else{
	echo "Mail inviata con successo";
}
?>
e non so bene cosa mettere in body html o body text dato che io ho questo da recuperare
PHP:
 <?php 
    $email ="crashsito64@yahoo.it"; 
    $nome = $_POST['name']; 
    $descrizione= $_POST['desc']; 
    $categoria= $_POST['cat']; 
    $file= $_POST['swf']; 
    $immagine= $_POST['thumb']; 
    $creatore= $_POST['authorname']; 
    $mittente= $_POST['mail']; 
?>
come devo fare?
 
ciao
grosso modo così.
PHP:
<?
$email ="crashsito64@yahoo.it"; 
    $nome = $_POST['name']; 
    $descrizione= $_POST['desc']; 
    $categoria= $_POST['cat']; 
    $file= $_POST['swf']; 
    $immagine= $_POST['thumb']; 
    $creatore= $_POST['authorname']; 
    $mittente= $_POST['mail'];  
	
require_once("class.phpmailer.php");

$mail = new PHPMailer();
$mail->IsSMTP(); // attiva l'invio tramiteSMTP
$mail->Host     = "mail.serverposta.it"; // indirizzo smtp
$mail->From     = "mittente@dominio.it";
$mail->FromName = "Nome Mittente";
$mail->AddAddress("destinatario@dominio.it");
$mail->IsHTML(true);  
$mail->Subject  =  $oggetto;
$mail->Body     =  $bodyhtml;
$mail->AltBody  =  $bodytxt;
$mail->AddAttachment("public/filename_1.zip"); 
if(!$mail->Send()){
    echo "Si è verificato un errore nell'invio della mail";
}else{
    echo "Mail inviata con successo";
}
?>
però ho dei grossi dubbi.
1) immagine è un file? se si nel form devi usare
<form action="pinco_pallo.php" method="post" enctype="multipart/form-data">
e per inviare il file
<input name="thumb" type="file" id="thumb" size="40">
per leggerlo
PHP:
$immagine=$_FILES['thumb']['name'] //non il $_POST
2) devi crearti il testo da inviare
es:
PHP:
//.....
$bodyhtml = "Categoria: $categoria<br>";
$bodyhtml .= "Descrizione: $descrizione<br>".
$bodyhtml .= "Autore: $creatore<br><br>";
$bodyhtml .= "-------------------------<br>";
$bodyhtml .= "Inviata da: $nome<br>";
$bodyhtml .= "email: $mittente<br>";
// e preparare il file di testo alternativo
$bodytxt =str_replace ("<br>", "\\n",$bodyhtml);
//ed eventualmente poi togliere gli altri tag html
$bodytxt =strip_tags($bodytxt);
//.......
3) normalmente da remoto l'smtp non dovrebbe servire comunque dovrebbe essere
PHP:
//.....
$mail->IsSMTP();// send via SMTP
$mail->Host     = "mail.serverposta.it"; // SMTP servers
$mail->SMTPAuth = true;     // turn on SMTP authentication
$mail->Username = "tuo_username";  // SMTP username
$mail->Password = "tua_password"; // SMTP password
//.....
e devi verificare nella cartella di phpmailler esista il file class.smtp.php
4) farti inviare i dati così brutalmente senza alcun controllo può essere molto rischioso
 
okkei grazie mille però volevo chiedere dato che ci sono parecchie cose da inviare tramite e-mail posso ripetere le funzioni come queste?
PHP:
$mail->AddAttachment("public/filename_1.zip");
$mail->Body     =  $bodyhtml;
 
ciao
cosa intendi così brutalmente?
intendo senza alcun controllo
es:

PHP:
$file_da_all=$_FILE['pinco']['name'];
se alleghi seza alcun controllo un potrebbe inviarti un file
troian.exe
analogo per gli altri $_POST
un bello script in js che ti manda in pallino
questa è la parte grave, c'è una parte meno grave ma comunque irritante
ti manda il nome vuoto o per es. email pinco#pallo.it o vuota
 
allora l' e-mail non mi parte mi dà questo errore ma non riesco a capirne l' identità perchè il problema nn semberano essere gli alledati dato che se anche li tolgo me lo fa :
Could not access file: The following From address failed: patriziogrande@yahoo.com Si è verificato un errore nell'invio della mail
riposto i codici parte html:
HTML:
<html> 
<form action="riuscito.php" method="post" enctype="multipart/form-data" target="_blank">
         Game Name: <br />

		 <input type='text' name='name' /><br />

         

         <br />



		 Descrizione<br />

		 <textarea name='desc' style='width: 300px;'></textarea><br />



		 Category: <br />

         

		 <select name='cat'>

         <option value="giochi di azione">giochi di azione</option><option value="giochi di volo">giochi di volo</option><option value="giochi classici" selected>giochi classici</option><option value="giochi al femminile">giochi al femminile</option><option value="giochi per bambini">giochi per bambini</option><option value="giochi di guerra">giochi di guerra</option><option value="giochi di auto">giochi di auto</option><option value="giochi di strategia">giochi di strategia</option><option value="giochi sparatutto">giochi sparatutto</option><option value="giochi di sport">giochi di sport</option><option value="giochi di moto">giochi di moto</option><option value="giochi di lotta">giochi di lotta</option><option value="giochi di carte">giochi di carte</option><option value="giochi di abilita">giochi di abilità</option>           
	  </select><br />



		 file gioco (.swf.dcr. ...)<br />

		 <input type="file" name="swf" /><br />



		 Immagine:<br />

		 <input type='file' name='thumb' />
		 <br />



		 Nome del creatore: <br />

		 <input type='text' name='authorname' /><br />
<br />
         E-mail: <br />

		 <input type='text' name='mail' /><br />
<br />

		 <button type="submit">Invia</button>
		 		 <br />




	  </form></html>
e quello in php
PHP:
<?php
	$email ="crashsito64@yahoo.it";
	$nome = $_POST['name'];
	$descrizione= $_POST['desc'];
	$categoria= $_POST['cat'];
	$file= $_FILES['swf'];
	$immagine=$_FILES['thumb'];
	$creatore= $_POST['authorname'];
	$mittente= $_POST['mail'];
	$oggetto= "gioco";
    $bodyhtml = "Categoria: $categoria<br>"; 
    $bodyhtml = "Descrizione: $descrizione<br>";
    $bodyhtml = "Autore: $creatore<br><br>"; 
    $bodyhtml = "-------------------------<br>"; 
    $bodyhtml = "Inviata da: $nome<br>"; 
    $bodyhtml = "email: $mittente<br>"; 
$bodytxt =str_replace ("<br>", "\\n",$bodyhtml); 
$bodytxt =strip_tags($bodytxt); 
require_once("class.phpmailer.php");   
$mail = new PHPMailer();   
$mail->IsSMTP();
$mail->Host = "mail.yahoo.com"; 
$mail->From = $mittente;
$mail->AddAddress("$email"); 
$mail->IsHTML(true);
$mail->Subject  =  $oggetto;  
$mail->Body     =  $bodyhtml;
$mail->AltBody  =  $bodytxt;
$mail->AddAttachment(); 
if(!$mail->Send()){  
 echo "Si è verificato un errore nell'invio della mail"; }  
else{  
 echo "Mail inviata con successo"; }  
?>
 
ciao
intanto un esempio sui controlli ipotizzando un form qualsiasi tipo:
HTML:
<form name="modulo" action="invio.php" method="post" enctype="multipart/form-data">
	nome: <input type="text" name="nome"><br />
	email: <input type="text" name="email" ><br />
	testo: <textarea cols="20" rows="4" name="messaggio"></textarea><br />
	allegato: <input type="file" name="allegato"/><br />
	<input type="submit" name="invia" value="invia">
</form>

e vediamo cosa e come conviene controllare (metto i controlli in forma di function così possono essere messi tutti in un file controlli.php e poi inclusi nei form in cui servono)
i commenti servono per indicare cosa esegue lo script) e scrivo i passaggi passo passo

PHP:
<?php
function testo_monoriga($ts){
	if($t==""){//è vuoto quindi inutili altri controlli
		return FALSE;
	}else{
		$t=strip_tags($t);//tolgo i tag html
		$t=trim($t);//tolgo gli spazi iniziali e finali, se l'utente ha inputato solo spazi la stringa risulta vuota
		//eventualmente una verifica con preg_match secondo un pattern stabilito
		if(t==""){
			return FALSE;
		}else{
			return $t;
			/* se da inserire in una tabella del db potrebbe gia essere utile
			return addslashes($t);
			l'utente potrebbe chiamarsi d'albi */
		}
	}
}
function email($e){
	if($e=filter_var($e, FILTER_VALIDATE_EMAIL)){
		return $e;//l'indirizzo è formalmente valido
	}else{
		return FALSE;
	}
}
function testo_messaggio($tm){
	//qui potrebbe essere necessario verificare la sua lunghezza minima
	//inoltre potrebbe venire da un editor whisiwishing per cui alcuni tag html devono essere permessi
	$lung_min=10;
	$tag_ammessi="<br /> <b> <em>";//e altri che possono essere permessi
	$tm=strip_tags($tm,$tag_ammessi);
	if(strlen($tm) < $lung_min){
		return FALSE;
	}else{
		return $tm;
	}
}
function da_allegare($f){
	/*qui i controlli si possono riferire a
	tipo di file $_FILE['allegato']['type']
	la sua grandezza $_FILE['allegato']['size'] in byte (kb = byte/1024)
	*/
	$grandezza_massima = 200000;
	$file_consentiti=array('jpg','gif','png');
	if($f['size'] > $grandezza_massima || !in_array($file_consentiti, $f['type'])){
		return FALSE;
	}else{
		return $f['name'];
	}
}
//...........................
//si puo mettere una variabile per i messaggi di errore
$ok_ko="";//messa a vuota
if(testo_monoriga($_POST['nome'])== FALSE){$ok_ko.="nome non corretto o non inserito<br />";
if(email($_POST['email'])== FALSE){$ok_ko.="email non inserita o non corretta<br />";
if(testo_messaggio($_POST['messaggio'])== FALSE){$ok_ko.="messaggio troppo corto<br />";
if(da_allegare($_FILES['allegato'])== FALSE){$ok_ko.="messaggio troppo corto<br />";
//qui se NON ci sono errori $ok_ko è rimasta vuota, altrimenti conterrà uno o più messaggi di errore
if($ok_ko==""){
	//quello che si deve fare: inviare l'email o inserire nel db
}else{//$ok_ko contine qualcosa
	echo "hai commesso i seguenti errori.<br />";
	echo $ok_ko;
	//e qui cosa fare in caso di errore, es. ritorno al form
}
//............................
?>
guarda che è solo un esempio.
ora do un occhi al tuo script poi spero di saperti dire

p.s.
non sbrodolare gli script in quel modo
 
ciao
prova così, leggi i commenti
PHP:
<?php
//metti in testa questa funzione
function file_da_allegare($file_nome, $file_tmp){
	$nome_file=pathinfo($file_nome, PATHINFO_BASENAME);
	$nome_file_temp=$file_tmp;
	$cartella_temp=pathinfo($nome_file_temp, PATHINFO_DIRNAME);
	if (strpos($cartella_temp, '/') !== false){
		$cartella_temp.= "/";
	}else{
		$cartella_temp.= "\\";
	}
	$da_allegare=$cartella_temp.$nome_file;
	if(move_uploaded_file($nome_file_temp, $da_allegare)){
		return $da_allegare;
	}else{
		return FALSE;
	}
}//fine function file da allegare
//...........................................................
$email ="crashsito64@yahoo.it";
$nome = $_POST['name'];
$descrizione= $_POST['desc'];
$categoria= $_POST['cat'];
$file= $_FILES['swf'];
$immagine=$_FILES['thumb'];
$creatore= $_POST['authorname'];
$mittente= $_POST['mail'];
$oggetto= "gioco";
$bodyhtml = "Categoria: $categoria<br>"; //*****qui ti sei dimenticato il concatenamento
$bodyhtml .= "Descrizione: $descrizione<br>";
$bodyhtml .= "Autore: $creatore<br><br>"; 
$bodyhtml .= "<hr>"; //*** è più bello un <hr>
$bodyhtml .= "Inviata da: $nome<br>"; 
$bodyhtml .= "email: $mittente<br>"; //*** come avevi fatto tu quasta è l'uncia cosa inviata
$bodytxt =str_replace ("<br>", "\\n",$bodyhtml); 
$bodytxt =strip_tags($bodytxt); 
require_once("class.phpmailer.php");   
$mail = new PHPMailer();   
$mail->IsSMTP();
$mail->Host = "mail.yahoo.com"; 
$mail->From = $mittente;
$mail->AddAddress("$email"); 
$mail->IsHTML(true);
$mail->Subject  =  $oggetto;  
$mail->Body     =  $bodyhtml;
$mail->AltBody  =  $bodytxt;
if($immagine !=""){//******modifica
	$allegare=file_da_allegare($_FILES['thumb']['name'], $_FILES['thumb']['tmp_name']);
	if($allegare != FALSE){
		$mail->AddAttachment($allegare);
	}
}
if(!$mail->Send()){  
	echo "Si è verificato un errore nell'invio della mail"; }  
else{  
	echo "Mail inviata con successo";
}  
?>
sappimi dire
 
allora l' errore c'è ma è cambiato
The following From address failed: patrizio97@libero.it Si è verificato un errore nell'invio della mail
il codice che mi hai dato nn ho cpt bn se dovevo cambiare qualcosa o no cmnq un cosa l' ho cambiata nel file da allegare
PHP:
<?php 
//metti in testa questa funzione 
function file_da_allegare($file_nome, $file_tmp){ 
    $nome_file=pathinfo($file_nome, PATHINFO_BASENAME); 
    $nome_file_temp=$file_tmp; 
    $cartella_temp=pathinfo($nome_file_temp, PATHINFO_DIRNAME); 
    if (strpos($cartella_temp, '/') !== false){ 
        $cartella_temp.= "/"; 
    }else{ 
        $cartella_temp.= "\\"; 
    } 
    $da_allegare=$cartella_temp.$nome_file; 
    if(move_uploaded_file($nome_file_temp, $da_allegare)){ 
        return $da_allegare; 
    }else{ 
        return FALSE; 
    } 
}//fine function file da allegare 
//........................................................... 
$email ="crashsito64@yahoo.it"; 
$nome = $_POST['name']; 
$descrizione= $_POST['desc']; 
$categoria= $_POST['cat']; 
$file= $_FILES['swf']; 
$immagine=$_FILES['thumb']; 
$creatore= $_POST['authorname']; 
$mittente= $_POST['mail']; 
$oggetto= "gioco"; 
$bodyhtml = "Categoria: $categoria<br>"; //*****qui ti sei dimenticato il concatenamento 
$bodyhtml .= "Descrizione: $descrizione<br>"; 
$bodyhtml .= "Autore: $creatore<br><br>";  
$bodyhtml .= "<hr>"; //*** è più bello un <hr> 
$bodyhtml .= "Inviata da: $nome<br>";  
$bodyhtml .= "email: $mittente<br>"; //*** come avevi fatto tu quasta è l'uncia cosa inviata 
$bodytxt =str_replace ("<br>", "\\n",$bodyhtml);  
$bodytxt =strip_tags($bodytxt);  
require_once("class.phpmailer.php");    
$mail = new PHPMailer();    
$mail->IsSMTP(); 
$mail->Host = "mail.yahoo.com";  
$mail->From = $mittente; 
$mail->AddAddress("$email");  
$mail->IsHTML(true); 
$mail->Subject  =  $oggetto;   
$mail->Body     =  $bodyhtml; 
$mail->AltBody  =  $bodytxt; 
if($immagine !=""){//******modifica 
    $allegare=file_da_allegare($_FILES['thumb']['name'], $_FILES['swf']['tmp_name']); 
    if($allegare != FALSE){ 
        $mail->AddAttachment($allegare); 
    } 
} 
if(!$mail->Send()){   
    echo "Si è verificato un errore nell'invio della mail"; }   
else{   
    echo "Mail inviata con successo"; 
}   
?>
quì $allegare=file_da_allegare($_FILES['thumb']['name'], $_FILES['swf']['tmp_name']);
c'er a2 volte thumb ma io dopo ho messo swf per il resto ho rimasto invariato
 
ciao
se hai usato come nome swf nel campo $_FILE:
PHP:
$allegare=file_da_allegare($_FILES['swf']['name'], $_FILES['swf']['tmp_name']);

dimenticavo:
a che ne so farsi inviare file .swf da chi non si conosce può essere pericoloso
 
Ultima modifica:
praticamente a me devono inviare sia swf che immagine per questo avevo messo in quel modo nn va bene? cmnq per la sicurezza ho cpt quello che dici ma i file di gioco chemi devo no mandare o sono in quel formato o in dcr (shckwave) nn c'è scelta
 
ciao
nel campo di input $_FILE puoi mettere tutti i nomi che vuoi (anche asdrubale) come ti ho detto l'importante è verificare cosa ti inviano, es uno potrebbe inviarti un file cancella_tutto_harddisc.exe e se non fai i controlli anche se si chiama asdrubale ricevi l'exe
 
okkei però la mail nn mi parrte ancora e ho ftt una modifica ma neanche prima andava

PHP:
 <?php 
//metti in testa questa funzione 
function file_da_allegare($file_nome, $file_tmp){ 
    $nome_file=pathinfo($file_nome, PATHINFO_BASENAME); 
    $nome_file_temp=$file_tmp; 
    $cartella_temp=pathinfo($nome_file_temp, PATHINFO_DIRNAME); 
    if (strpos($cartella_temp, '/') !== false){ 
        $cartella_temp.= "/"; 
    }else{ 
        $cartella_temp.= "\\"; 
    } 
    $da_allegare=$cartella_temp.$nome_file; 
    if(move_uploaded_file($nome_file_temp, $da_allegare)){ 
        return $da_allegare; 
    }else{ 
        return FALSE; 
    } 
}//fine function file da allegare 
//........................................................... 
$email ="crashsito64@yahoo.it"; 
$nome = $_POST['name']; 
$descrizione= $_POST['desc']; 
$categoria= $_POST['cat']; 
$file= $_FILES['swf']; 
$immagine=$_FILES['thumb']; 
$creatore= $_POST['authorname']; 
$mittente= $_POST['mail']; 
$oggetto= "gioco"; 
$bodyhtml = "Categoria: $categoria<br>"; //*****qui ti sei dimenticato il concatenamento 
$bodyhtml .= "Descrizione: $descrizione<br>"; 
$bodyhtml .= "Autore: $creatore<br><br>";  
$bodyhtml .= "<hr>"; //*** è più bello un <hr> 
$bodyhtml .= "Inviata da: $nome<br>";  
$bodyhtml .= "email: $mittente<br>"; //*** come avevi fatto tu quasta è l'uncia cosa inviata 
$bodytxt =str_replace ("<br>", "\\n",$bodyhtml);  
$bodytxt =strip_tags($bodytxt);  
require_once("class.phpmailer.php");    
$mail = new PHPMailer();    
$mail->IsSMTP(); 
$mail->Host = "mail.yahoo.com";  
$mail->From = $mittente; 
$mail->AddAddress("$email");  
$mail->IsHTML(true); 
$mail->Subject  =  $oggetto;   
$mail->Body     =  $bodyhtml; 
$mail->AltBody  =  $bodytxt; 
if($immagine !="" && $file!=""){//******modifica 
    $allegare=file_da_allegare($_FILES['thumb']['name'], $_FILES['thumb']['tmp_name']); 
	$allegare1=file_da_allegare($_FILES['swf']['name'], $_FILES['swf']['tmp_name']);
    if($allegare != FALSE){ 
        $mail->AddAttachment($allegare); 
		 if($allegare1 != FALSE){ 
        $mail->AddAttachment($allegare1); }
    } 
} 
if(!$mail->Send()){   
    echo "Si è verificato un errore nell'invio della mail"; }   
else{   
    echo "Mail inviata con successo"; 
}   
?>
 

Discussioni simili