Form invio e-mail con allegato

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
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
 

el_diablo92

Utente Attivo
17 Dic 2012
31
0
6
Provato ma niente. Adesso l'errore è "Impossibile istanziare la funzione mail Errore di trasmissione, riprova più tardi".
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
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
 

el_diablo92

Utente Attivo
17 Dic 2012
31
0
6
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:
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
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

  • phpmailler.zip
    33,3 KB · Visite: 307

el_diablo92

Utente Attivo
17 Dic 2012
31
0
6
Perfetto! Adesso funziona tutto alla perfezione. Grazie infinite borgo!
Comunque il problema qual'era? Errore mio?
 

nice4u2

Nuovo Utente
12 Set 2013
1
0
0
mi spiace riaprire questa discussione... ma ...
dato che il form funziona perfettamente...
se volessi inserire i dati in un db???:hammer:
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
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
Autore Titolo Forum Risposte Data
U PHP bottone per invio mail o ritorno al form PHP 15
B [PHP] Invio mail automatico dopo compilazione form - db PHP 25
paloppa [PHP] Invio mail da form dubbio PHP 17
F Form mail php errore invio PHP 5
I form invio mail HTML e CSS 1
Francesco Polese Errore form invio mail+php PHP 22
P invio mail da form con dati php PHP 7
W Estrapolare un indirizzo mail di un form durante l'invio PHP 5
I invio mail da form PHP 1
S Form invio mail html, con invio tramite file denominato invio.php PHP 8
Il Matta Problema Form e invio mail PHP 2
B Problema form mail per invio doppio allegato PHP 1
A Problema orario invio mail per form PHP 4
S php form invio mail PHP 3
L Form con invio mail PHP 1
E Form invio e-mail con allegato PHP 0
N Form invio Mail con Allegato PHP 2
C problema invio mail con form php PHP 0
T form per invio mail PHP 38
R [Flash] redirect dopo invio form mail Flash 4
S form invio mail con foto o logo PHP 46
P Form per invio mail PHP 27
G Invio Dati Form ad E-Mail PHP 1
P aggiunta modulo invio allegati a form mail PHP 15
S Problema invio mail da form Classic ASP 6
Z form invio mail, scelta destinatari PHP 0
S form invio mail con opzioni PHP 3
B Invio tramite form mail di più allegati PHP 0
T Invio mail da form contatti con annesso file attachment Classic ASP 1
L Problemi con invio form via mail Classic ASP 3
F script asp invio mail con dati di un form Classic ASP 3
S problemi invio dati da un form a e.mail HTML e CSS 1
K [php]form invio dati PHP 0
G form invio multiplo con checkbox PHP 12
nivaria.achinet Intercettare form solo dopo invio Javascript 1
M Unire 2 funzioni per l'invio di un form e con l'apertura di un div Javascript 0
M Form: come tornare ai campi già compilati dopo invio PHP 1
G Invio form con PHP PHP 3
S Invio email da form PHP 8
A [PHP] Invio automatico dati da form PHP 6
Cosina [PHP] Preservare i campi del form solo se l'invio non ha successo PHP 5
R [javascript]Form invio preventivo Javascript 0
G [PHP] FORM INVIO VALORI A QUERY CON TRE CONDIZIONI PHP 2
S Problema invio form php/html PHP 3
Samuele Ronzani [PHP] Validazione e invio campi form. PHP 7
Matteo Lorenzon [PHP][WORDPRESS] Form in Wordpress, creazione PDF con dati del form ed invio tramite email WordPress 1
Marco_88 Passare un valore prima dell'invio del form Ajax 0
P PHP mailer invio form con 2 allegati. PHP 3
G Form invio multiplo da database PHP 0
C Come posso integrare il bottone "paga adesso" di paypal e un form php per invio dati? PHP 1

Discussioni simili