non mi parte l' email

ho trovato il problema non è nel codice ma è altervista che non lo supporta mi hanno detto devo usare mail() per forza
 
allora mi sono rivolto al forum di altervista.org e lì mi hanno risposto così:

AlterVista non permette di instaurare connessioni TCP verso porte differenti dalla 80 e 443.
nn so cosa voglia dire questo però mi sono messo a usare mail():
PHP:
<?php 
$email ="[email protected]"; 
$messaggio = $_POST['name']; 
$descrizione= $_POST['desc']; 
$categoria= $_POST['cat']; 
$file= $_FILES['swf']; 
$immagine=$_FILES['thumb']; 
$creatore= $_POST['authorname']; 
$mittente= $_POST['mail']; 
$oggetto= "gioco"; 
$contenuto=array ('Categoria: $categoria<br>', 'Descrizione: $descrizione<br>','Autore: $creatore<br><br>', '<hr>', 'Inviata da: $nome<br>','email: $mittente<br>');
mail($email,$oggetto,$contenuto,$mittente);
if(mail($email,$oggetto,$contenuto,$mittente)){   
    echo "Mail inviata con successo"; }   
else{   
    echo "Si è verificato un errore nell'invio della mail"; 
}   
?>
però il problema mi hanno sempre detto è che devo usare una stringa e non un array ed io non sò come farlo mi potresti aiutare in questo. GRazie mille cmnq per l' aiuto che mi stai dando
 
ciao
PHP:
$contenuto="Categoria: $categoria<br>Descrizione: $descrizione<br>Autore: $creatore<br><br><hr>Inviata da: $nome<br>email: $mittente<br>";
 
l' e_mail arriva:beer: però arriva così Categoria: giochi classici<br>Descrizione: <br>Autore: <br><br><hr>Inviata da: <br>email: [email protected]<br>
i tag nn funzionano bensì rimangono e non arrivano i file bensì array array
PHP:
<?php 
$email ="[email protected]"; 
$messaggio = $_POST['name']; 
$descrizione= $_POST['desc']; 
$categoria= $_POST['cat']; 
$file= $_FILES['swf']; 
$immagine=$_FILES['thumb']; 
$creatore= $_POST['authorname']; 
$mittente= $_POST['mail']; 
$oggetto= "gioco"; 
$contenuto="Categoria: $categoria<br>Descrizione: $descrizione<br>Autore: $creatore<br><br><hr>Inviata da: $nome<br>email: $mittente<br>,$file,$immagine";  
if(mail($email,$oggetto,$contenuto,$mittente)){   
    echo "Mail inviata con successo"; }   
else{   
    echo "Si è verificato un errore nell'invio della mail"; 
}   
?>
 
Ultima modifica:
ciao
non hai messo le opzioni in modo che mail() invii in formato html o il tuo client non è settato giusto.
comunque riprova con phpmailer togliendo l'istruzione
$mail->IsSMTP();
dimenticavo:
riguarda la mia prima risposta dove ti indicavo il link alle istruzioni di mail(), li trovi come spedire in formato html
 
Ultima modifica:
okkei phpmailer mi funziona però arriva solo

email: [email protected]
il resto niente
ecco il codice
PHP:
<?php
    $email ="[email protected]";
    $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->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"; }  
?>
 
mi ariva tutto ora trenne gli allegati e ho rimeso tutto il codice originario
cosa devo cambiare?
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 ="[email protected]"; 
$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->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']); 
	$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"; 
}   
?>
 
ciao
due cose
1. verifica che i file vengano trasmessi
PHP:
<?php
//.....
$file= $_FILES['swf'];
var_dump($_FILES['swf']);
$immagine=$_FILES['thumb'];
var_dump($_FILES['thumb']);
//....
?>
2. poi visto che gli allegati sono due e non uno solo
PHP:
<?php
//....
if($file !="" || $immagine !=""){//******o uno o due
    $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); 
    } 
}
//....
?>
 
allora il problema sussiste ancora ma è cambiato esce questo
array(5) { ["name"]=> string(20) "Ben10 Power Jump.swf" ["type"]=> string(29) "application/x-shockwave-flash" ["tmp_name"]=> string(29) "/membri/.dummy/temp/phpnkDojX" ["error"]=> int(0) ["size"]=> int(1008204) } array(5) { ["name"]=> string(14) "causality6.gif" ["type"]=> string(9) "image/gif" ["tmp_name"]=> string(29) "/membri/.dummy/temp/phpXPDHrU" ["error"]=> int(0) ["size"]=> int(6294) } Mail inviata con successo
questo è il codice:
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 ="[email protected]"; 
$nome = $_POST['nome']; 
$descrizione= $_POST['desc']; 
$categoria= $_POST['cat']; 
$file= $_FILES['swf']; 
var_dump($_FILES['swf']);
$immagine=$_FILES['thumb']; 
var_dump($_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->Host = "mail.yahoo.com";  
$mail->From = $mittente; 
$mail->AddAddress("$email");  
$mail->IsHTML(true); 
$mail->Subject  =  $oggetto;   
$mail->Body     =  $bodyhtml; 
$mail->AltBody  =  $bodytxt; 
if($file !="" || $immagine !=""){//******o uno o due 
    $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"; 
}   
?>
 
ciao
quindi i valori vengono trasmessi
verifica che vengano elaborati

PHP:
<?php
//..........
if($file !="" || $immagine !=""){//******o uno o due  
    $allegare=file_da_allegare($_FILES['thumb']['name'], $_FILES['thumb']['tmp_name']);   
    $allegare1=file_da_allegare($_FILES['swf']['name'], $_FILES['swf']['tmp_name']);   
    var_dump( $allegare);
	var_dump( $allegare1);
	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";  
}    
?>
 
l' errore rimane quindi a stò punto vuol dire che non elabora ? quindi cosa fare? ma sopratutto perchè tutti questi problemi?
cmnq l' errore è questo:
array(5) { ["name"]=> string(17) "city drifters.jpg" ["type"]=> string(10) "image/jpeg" ["tmp_name"]=> string(29) "/membri/.dummy/temp/phpExKbw5" ["error"]=> int(0) ["size"]=> int(8772) } array(5) { ["name"]=> string(30) "CivWarsIceWarsDistribution.swf" ["type"]=> string(29) "application/x-shockwave-flash" ["tmp_name"]=> string(29) "/membri/.dummy/temp/phpiz45e3" ["error"]=> int(0) ["size"]=> int(9938) } bool(false) bool(false) Mail inviata con successo
 
ciao
prova (per le verifiche) ad inviare un file solamente (es solo l'immagine)
e metti

PHP:
<?php
//....
if($file !="" || $immagine !=""){//******o uno o due
    var_dump($_FILES['thumb']['name']);
	var_dump($_FILES['thumb']['tmp_name']);
	$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); 
    } 
}
//...
?>
e come al solito posta il risultate dei var_dump
poi se hai voglia perova anche per l'swf
 
allora ho provato con il file swf e l' errore nn mi fa nemmeno partire l' email ed è questo:
array(5) { ["name"]=> string(18) "Devil Blocks 2.swf" ["type"]=> string(29) "application/x-shockwave-flash" ["tmp_name"]=> string(29) "/membri/.dummy/temp/phpbswwTs" ["error"]=> int(0) ["size"]=> int(1068787) } array(5) { ["name"]=> string(0) "" ["type"]=> string(0) "" ["tmp_name"]=> string(0) "" ["error"]=> int(4) ["size"]=> int(0) } string(0) "" string(0) ""
lo stesso per l' immagine :
array(5) { ["name"]=> string(0) "" ["type"]=> string(0) "" ["tmp_name"]=> string(0) "" ["error"]=> int(4) ["size"]=> int(0) } array(5) { ["name"]=> string(26) "Causality story part 2.gif" ["type"]=> string(9) "image/gif" ["tmp_name"]=> string(29) "/membri/.dummy/temp/phpcvlqnU" ["error"]=> int(0) ["size"]=> int(4511) } string(26) "Causality story part 2.gif" string(29) "/membri/.dummy/temp/phpcvlqnU"

eccoi l codice:
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 ="[email protected]"; 
$nome = $_POST['nome']; 
$descrizione= $_POST['desc']; 
$categoria= $_POST['cat']; 
$file= $_FILES['swf']; 
var_dump($_FILES['swf']);
$immagine=$_FILES['thumb']; 
var_dump($_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->Host = "mail.yahoo.com";  
$mail->From = $mittente; 
$mail->AddAddress("$email");  
$mail->IsHTML(true); 
$mail->Subject  =  $oggetto;   
$mail->Body     =  $bodyhtml; 
$mail->AltBody  =  $bodytxt; 
//.... 
if($file !="" || $immagine !=""){//******o uno o due 
    var_dump($_FILES['thumb']['name']); 
    var_dump($_FILES['thumb']['tmp_name']); 
    $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);  
    }  
} 
?>
 
ciao
sei sixuro si aver messo giusti i var_dump?
il var_dump di $_FILES['thumb']['name'] nom dovrebbe restituirti quell'array ma il vome del file
 
ciao
ecco la versione con phpmailer (tra l'altro non vedo perche non dovrebbe funzionare), a me funzia
caricala così come'è e provala (a parte il nome della pag del form che devi modificare)
leggi i commenti
PHP:
<?php
function file_da_allegare($file_nome, $file_tmp){//$_FILES['file']['name'], $_FILES['file']['tmp_name']
	//ricavo il nome del file e del temp cone gli eventuali percorsi
	$nome_file=pathinfo($file_nome, PATHINFO_BASENAME);
	$nome_file_temp=$file_tmp;
	//rivavo il percorso temporaneo con + slash finale
	$cartella_temp=pathinfo($nome_file_temp, PATHINFO_DIRNAME);
	//aggoungo lo slash in funzione del so
	if (strpos($cartella_temp, '/') !== false){
		$cartella_temp.= "/";
	}else{
		$cartella_temp.= "\\";
	}
	//e ricavo il nome del file da allegare con il suo percorso
	$da_allegare=$cartella_temp.$nome_file;
	//uploado e verifico
	if(move_uploaded_file($nome_file_temp, $da_allegare)){
		return $da_allegare;//file caricato in cartella temporanea e nome da indicare a PHPmailler
	}else{
		return FALSE;//c'è stato un errore
	}
}//fine function file da allegare
function tipi_ammessi($f){//$_FILES['file']['name'])
	//elenco in array i tipi ammessi
	$tipo=array('jpg', 'JPG','gif','png','swf');
	//ricavo il nome del file
	$file=pathinfo($f, PATHINFO_BASENAME);
	//ricavo l'estensione del file
	$estensione=pathinfo($f, PATHINFO_EXTENSION); 
	//verifico che l'estensione sia tra i tipi ammessi
	if(in_array($estensione,$tipo)){
		return TRUE;//l'estensione è consentita
	}else{
		return FALSE;//file con estensione non consentita
	}
}//fine function verifica tipi di file
//******************************************
$nome = trim(strip_tags($_POST['name']));
$descrizione= trim(strip_tags($_POST['desc']));
$categoria= $_POST['cat'];
$creatore= trim(strip_tags($_POST['authorname']));
$mittente= trim(strip_tags($_POST['mail']));
//$file= trim(strip_tags($_FILES['swf'])); LI TRATTO DOPO
//$immagine=trim(strip_tags($_FILES['thumb']));
//gestione degli errori
$ok_ko="";
if($nome==""){$ok_ko.="non hai inserito il nome<br>";}
if($descrizione==""){$ok_ko.="non hai inserito la descrizione<br>";}
if($categoria==""){$ok_ko.="non hai selezionato la categoria<br>";}
if($creatore==""){$ok_ko.="non hai inserito l'autore<br>";}
if(!filter_var($mittente, FILTER_VALIDATE_EMAIL)){$ok_ko.="indirizzo email non corretto o non inserito<br>";}
if($_FILES['swf']==""){
	$ok_ko.="non hai allegato l'swf<br>";
}else{
	if(!tipi_ammessi($_FILES['swf']['name'])){
		$ok_ko.="tipo di file non consentito<br>";
	}else{
		$file=file_da_allegare($_FILES['swf']['name'], $_FILES['swf']['tmp_name']);
		if($file== FALSE){$ok_ko.="errore nel caricamento file swf<br>";}
	}
}
if($_FILES['thumb']==""){
	$ok_ko.="non hai allegato l'immagine<br>";
}else{
	if(!tipi_ammessi($_FILES['thumb']['name'])){
		$ok_ko.="tipo di file non consentito<br>";
	}else{
		$immagine=file_da_allegare($_FILES['thumb']['name'], $_FILES['thumb']['tmp_name']);
		if($immagine== FALSE){$ok_ko.="errore nel caricamento file immagine<br>";}
	}
}
//a questo punto se la variabile $ok_ko è rimasta vuota vuol dire che non ci sono errori nella compilazione del form
if($ok_ko !=""){
	//ci sono stati errori
	//avviso e torno al form
	echo $ok_ko;
	echo "<meta http-equiv='Refresh' content='3; URL=nome_pagina_del_form.php'>";//METTI TUO NOME
}else{
	//non sono stati commessi errori quindi preparo il tutto per la spedizione
	require_once("class.phpmailer.php");
	$mail = new PHPMailer();
	
	$email ="[email protected]";
	$oggetto= "gioco";
	$bodyhtml = "Categoria: $categoria<br>"; 
	$bodyhtml = "Descrizione: $descrizione<br>";
	$bodyhtml = "Autore: $creatore<br><br>"; 
	$bodyhtml = "<hr>"; 
	$bodyhtml = "Inviata da: $nome<br>"; 
	$bodyhtml = "email: $mittente<br>"; 
	$bodytxt =str_replace ("<br>", "\\n",$bodyhtml); 
	$bodytxt =strip_tags($bodytxt);
	 
	$mail->From = $mittente;
	$mail->AddAddress("$email"); 
	$mail->IsHTML(true);
	$mail->Subject  =  $oggetto;  
	$mail->Body     =  $bodyhtml;
	$mail->AltBody  =  $bodytxt;
	$mail->AddAttachment($file);//qui ti eri dimenticato di inserire il nome del file
	$mail->AddAttachment($immagine);
	//se invia uno solo avvisami
	if(!$mail->Send()){  
		echo "Si è verificato un errore nell'invio della mail riprova più tardi";
	}else{  
 		echo "Mail inviata con successo";
 	}
	echo "<meta http-equiv='Refresh' content='3; URL=nome_pagina_del_form.php'>";//METTI TUO NOME
}
?>

p.s.
poi, una volta provata, perchè non metti form ed incio nella stessa pagina?
 

Discussioni simili