• User

    Invio allegato da form

    Buongiorno a tutti,
    avrei un altro problemino col form che sto realizzando:
    tale form, oltre ai normali campi da compilare, prevede l'invio di un allegato alla mia casella email.
    L'invio va a buon fine e nella mia email ricevo il messaggio con l'allegato. Il problema è che l'allegato risulta danneggiato e quindi non lo posso aprire.

    Posto qui sotto il codice che ho utilizzato:

    [php]
    #CARATTERISTICHE FILE ALLEGATO
    $nomefile_tmp = $_FILES["allegato"]["tmp_name"];
    $tipoallegato = $_FILES["allegato"]["type"];
    $nomeallegato = $_FILES["allegato"]["name"];
    #DATI OTTENUTI DAGLI ALTRI CAMPI DEL FORM
    $testo_email = "Ruolo: $ruolo\nNome: $nome\nCognome: $cognome\nEmail: $email\nNote: $note";
    #CREAZIONE FILE DI LETTURA ALLEGATO
    $textfile = fopen($nomefile_tmp,"rb");
    $dati_allegato = fread($textfile,filesize($nomefile_tmp));
    fclose($textfile);
    #CODIFICA ALLEGATO SU BASE64
    $dati_allegato = chunk_split(base64_encode($dati_allegato));
    #NUMERO PER CODICE DELIMITATORE
    $numero_casuale = md5(time());
    #INIZIO DELIMITATORE
    $cod_delimitatore = "----=NextPart$numero_casuale";
    #PARAMETRI INVIO EMAIL
    $tipo_email = "MIME-Version: 1.0\nContent-type: multipart/mixed;boundary=$cod_delimitatore";
    $headers = "From: [email protected]\n$tipo_email";
    $headers .= "BCC: [email protected][/email]\r\n";
    $destinatario = "[email protected]";
    $oggetto = "Nuovo messaggio dal sito, sezione: Lavora con noi";
    #MESSAGGIO TESTO
    $messaggio_a = "This is a multi-part message in MIME format.\n\n".
    "--$cod_delimitatore\n".
    "Content-Type: text/plain; charset="iso-8859-1"\n".
    "Content-Transfer-Encoding: 7bit\n\n".
    "$testo_email\n\n";
    ALLEGATO
    $messaggio_b = "--$cod_delimitatore\n".
    "Content-Type: $tipoallegato; name="$nomeallegato"\n".
    "Content-Disposition: attachment; filename="$nomeallegato"\n".
    "Content-Transfer-Encoding: Base64\n\n".
    "$dati_allegato\n\n".
    "--$cod_delimitatore--\n"; #FINE DELIMITATORE
    #UNISCO MESSAGGIO TESTUALE CON ALLEGATO
    $messaggio = "$messaggio_a$messaggio_b";
    #INVIO EMAIL
    mail($destinatario, $oggetto, $messaggio, $headers);
    #REINDIRIZZO PAGINA
    header("Location: ../contatti.php?id=lavora_con_noi&rs=email_sent");
    [/php]Qualcuno mi sa dire cosa sbaglio?
    Grazie in anticipo!


  • User

    Io ti consiglio di usare la classe phpmailer per la funzione mail che permette di inviare anche allegati facilmente