Form invio e-mail con allegato

ciao
sto perdendo colpi, ma avresti dovuto accorrertene anche te.
if($da_allegare !=""){
$testo .="allegato ".$da_allegare."<hr>";
$mail->AddAttachment($allegare);
}else{
$testo .="allegato non inviato<hr>";
}
correggi in
PHP:
//....
 if($da_allegare !=""){
            $testo .="allegato ".$da_allegare."<hr>";
            $mail->AddAttachment($da_allegare);
        }else{
            $testo .="allegato non inviato<hr>";
        }
//.....

l'avevo messo in linea e anche a me non inviava l'allegato sino a che non mi sono accorto di quel ca..one di errore.
prova e sappimi dire
 
Provato ma niente. Adesso l'errore è "Impossibile istanziare la funzione mail Errore di trasmissione, riprova più tardi".
 
ciao
l'ho caricata e funzia (rimetti la tua email al posto della mia)
PHP:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Untitled Document</title>
</head>
<body>
 <?php
function tipi_ammessi($file){//$_FILES['allegato']['name']
    $tipo=array('doc', 'pdf','txt');//aggiunto txt per fare delle prove
    //guarda che .doc vale per vecchi word devi aggiungere la nuova estenzione che mi sembra sia docx, verifica
    $file=pathinfo($file, PATHINFO_BASENAME);
    $estensione=pathinfo($file, PATHINFO_EXTENSION); 
    if(in_array($estensione,$tipo)){
        return TRUE;
    }else{
        return FALSE;
    }
}
function file_da_allegare($file_nome, $file_tmp){//$_FILES['allegato']['name'], $_FILES['allegato']['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);
    //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
//************
if(isset($_POST['Invia'])){
    //$email = $_POST['mittente'];
    $funzione = trim($_POST['funzione']);//queto sarebbe l'oggetto dell'email
    if($funzione==""){$funzione="funzione non indicata";}
    $messaggio = trim(strip_tags($_POST['messaggio']));//questo lo metteri obbligatorio con un minimo di caratteri
    $errori="";
    if(strlen($messaggio) < 10){//se è meno di 10 caratteri
        $errori.= "Non hai scritto il mesaggio o troppo corto<br />";
    }
    if($_FILES['allegato']['name'] !=""){//se diverso da vuoto faccio le verifiche
        if(!tipi_ammessi($_FILES['allegato']['name'])){
            $errori.= "il formato dell'allegato non è ammesso<br />";
        }else{//se è ammesso lo carico nella cartella temporanea
            $da_allegare=file_da_allegare($_FILES['allegato']['name'], $_FILES['allegato']['tmp_name']);
            if($da_allegare== false){
                $errori.= "c'è stato un errore nel caricamento del file, riprova più tardi<br />";
            }
        }
    }else{
        $da_allegare="";//comunque lo vuoto
    }
    //$check = $_POST['check'];
    //$allegato = $_FILES['allegato']['tmp_name'];//lo usi dopo l verifica
    //$mittente = $_POST['mittente'];
    if(filter_var($_POST['email'], FILTER_VALIDATE_EMAIL)){
        $email = $_POST['email'];
    }else{
        $errori.="Indirizzo email non valido<br />";
    }
    if(!isset($_POST['check'])){
        $errori.="Non hai dato il consenso per il trattamento dei dati<br />";
    }else{
        //questo aggiungilo in coda con $msg .= $check;
        $check = "autorizzo il trattamento dei dati a norma del D.lgs. 196/03";
    }
    if($errori != ""){
        echo $errori;
    }else{
        //ho messo la cartella della classe nello stessa cartella dove c'è il form (altrimenti devi modificare il percorso)
        require_once "phpmailler/class.phpmailler.php";//richiamo la classe
        $mail = new PHPmailer();//e inizio a ad instanziarla
        $mail->SetLanguage('it','language/');
        $mail->IsHTML(true); // invio l'email in formato HTML
        $mail->Subject="invio curriculum: $funzione";
        $mail->AddAddress("[email protected]");//qui devi mettere la tua email o se è dal config devi mettere $to
        $mail->AddReplyTo($email,"");//per rispondere
        //preparo il messaggio da inviare
        //volendo puoi mettere una <table> e/o vari tag per cambuare colori
        $testo="<hr>email inviata il ".date("d m Y H:i:s")."<br>";
        $testo .="mittente $email<hr>";
        $testo .=nl2br($messaggio)."<hr>";//trasformo eventuali \n \r in <br>
        $testo .= $check."<hr>";
        if($da_allegare !=""){
            $testo .="allegato ".$da_allegare."<hr>";
            $mail->AddAttachment($da_allegare);
        }else{
            $testo .="allegato non inviato<hr>";
        }
        $mail->Body=$testo;
        if($mail->Send()){
            echo "Messaggio inviato....";
        }else{
            echo "Errore di trasmissione, riprova più tardi";
        }
     }
    echo "<meta http-equiv='Refresh' content='4; URL=".$_SERVER['PHP_SELF']."'>";
}else{
?> 

<form action="<?php echo $_SERVER['../PHP_SELF']; ?>" method="POST" enctype="multipart/form-data">
<table border="0">
<tr>
  <td>Email:</td>
  <td><input type="text" name="email" value="" /></td>
</tr>
<tr>
  <td>Funzione:</td>
  <td>
  <select name="funzione"> 
<option  value=""> -- Seleziona -- </option> 
<option value="Agente di commercio">Agente di commercio</option>
<option value="Procacciatore">Procacciatore</option> 
</select></td>
</tr>
<tr>
  <td>Messaggio:</td>
  <td><textarea cols="20" rows="4" name="messaggio"></textarea></td>
  </tr>
<tr>
  <td>Allega il tuo CV:</td>
  <td><input type="file" name="allegato" /></td>
</tr>
<tr>
  <td colspan="2"><center>Formati consentiti: .doc e .pdf<br />
  <div style="float: left; margin-left: 20px;"><input type="checkbox" name="check" /></div><div style="float: right; font-size: 10px; margin-top: 4px; margin-right: 15px;">Autorizzo il trattamento dei dati personali ai sensi del D. lgs. 196/03</div><br /></center>
  <center><input type="submit" value="Invia" name="Invia" /></center></td>
</tr>
</table>
</form>
<?php
}
?>
</body>
</html>
forse l'errore era in
require_once "phpmailler/class.phpmailer.php";//richiamo la classe
avevi (o forse avevo) scritto
require_once "PHPmailer/class.phpmailer.php";//richiamo la classe
con PHP maiuscolo e una elle sola
verifica attentamente come si chiama la cartella e la classe
 
La mia cartella si chiama "PHPMailer" e la classe ha il suo nome normale ovvero "class.phpmailer.php".
Ho controllato tutto il codice è sembra non ci sia nessun errore, l'ho confrontato con quello che hai appena postato tu, e conicidono, però quando lo carico e lo provo mi da sempre "Impossibile istanziare la funzione mail Errore di trasmissione, riprova più tardi". Ho provato a prendere il codice postato da te, ho cambiato mail, e cartella di riferimento ma niente. Davvero non riesco a capire cosa c'è che non va? Soprattutto perché a te sembra andare :confused:
 
ciao
salvi nella cartella public_html (quella che hai in locale) lo disizippi e poi cariche tutta la cartella phpmailler nella cartella puplic_html remota.
ricordati di modificare il require
require "phpmailler/class.phpmailer.php";

dentro la cartella phpmailler non toccare niente
 

Allegati

Perfetto! Adesso funziona tutto alla perfezione. Grazie infinite borgo!
Comunque il problema qual'era? Errore mio?
 
mi spiace riaprire questa discussione... ma ...
dato che il form funziona perfettamente...
se volessi inserire i dati in un db???:hammer:
 
ciao
intanto dovresti dire che dati vuoi inserire e se vuoui contemporaneamente inviare un'email.,
poi apri un nuovo 3d, quando sono troppo lunghi si fa fatica a seguirli (eventualmente citando questo)
 

Discussioni simili