Visualizzazione dei risultati da 1 a 3 su 3
  1. #1
    Utente di HTML.it
    Registrato dal
    Oct 2002
    Messaggi
    136

    email, allegati e upolad!

    Salve a tutti,
    so che l'argomento è stato trattato bene nel forum ma ho un problema con l'invio di una mail con un allegato preso a volo dal computer. Quello che faccio in ordine è questo:
    modulo per prendere tutti i parametri,
    upload del file (e funziona perchè ritrovo il file nella cartella)
    invio della mail.

    Purtroppo l'allegato mi arriva sempre vuoto (0 byte). Non riesco a capire perchè. Posto il codice sia del modulo che del file sendmail.php

    Codice PHP:
    <form action="sendmail.php" enctype="multipart/form-data" method="POST">
    <
    table cellpadding="0" cellspacing="0">
      <
    tr>
        <
    td>Destinatario: </td>
        <
    td><input type="text" name="Destinatario" size="40"></td>
      </
    tr>
      <
    tr>
        <
    td>Soggetto:</td>
        <
    td><input type="text" name="Soggetto" size="40"></td>
      </
    tr>
      <
    tr>
        <
    td>Allegato:</td><td><input type="file" name="allegato" size="40"></td>
      </
    tr>
      <
    tr>
        <
    td valign="top">Contenuto:</td>
        <
    td><textarea name="Contenuto" rows="15" cols="50"></textarea></td>
      </
    tr>
      <
    tr>
        <
    td height="30" valign="bottom" colspan="2" align="center"><input type="submit" value="Invia la mail">
      </
    tr>
    </
    table>
    </
    form
    sendmail.php

    Codice PHP:
    // RENDIAMO LO SCRIPT COMPATIBILE CON LE VERSIONI DI PHP < 4.1.0
    if(!isset($_POST)) $_POST $HTTP_POST_VARS;
    if(!isset(
    $_FILES)) $_FILES $HTTP_POST_FILES;

    // RIPULIAMO I VARI CAMPI DEL MODULO
    $Destinatario trim($_POST["Destinatario"]);
    $Soggetto trim(stripslashes($_POST["Soggetto"]));
    $Contenuto trim(stripslashes($_POST["Contenuto"]));

    // ASSEGNIAMO A VARIABILI PIU' LEGGIBILI LE PROPRIETA' DELL'ALLEGATO
    $attach $_FILES["allegato"]["tmp_name"];
    $file_name $_FILES["allegato"]["name"];
    $file_type $_FILES["allegato"]["type"];
    $file_size $_FILES["allegato"]["size"];

    // DELIMITATORE
    $boundary md5(uniqid(microtime()));

    // APRIAMO L'ALLEGATO PER LEGGERLO E CODIFICARLO
    if($attach != none ){
    $path="../mdb-database";
    copy($attach"$path/$file_name");
    $file = @fopen("$path/$file_name""r");
    $contents = @fread($file$file_size);
    $encoded_attach chunk_split(base64_encode($contents));
    @
    fclose($file);}

    // INTESTAZIONI DELLA MAIL
    $mail_headers .= "MIME-version: 1.0\n";
    $mail_headers .= "Content-type: multipart/mixed; boundary=\"$boundary\"";
    $mail_headers .= "X-attachments: $file_name\n";

    // COSTRUIAMO IL CORPO DELLA MAIL
    $mail_body "--$boundary\n";
    $mail_body .= "Content-Type: text/plain; charset=us-ascii\n";
    $mail_body .= "Content-Transfer-Encoding: 7bit\n\n";
    $mail_body .= "$Contenuto\n\n";
    $mail_body .= "--$boundary\n";
    $mail_body .= "Content-type: $file_type; name=\"$file_name\"\n";
    $mail_body .= "Content-Transfer-Encoding: base64\n";
    $mail_body .= "$encoded_attach\n";
    $mail_body .= "--$boundary--\n";

    // INVIO DELLA MAIL
    if(@mail($Destinatario$Soggetto$mail_body$mail_headers)) { // SE L'INVIO È ANDATO A BUON FINE...

    echo "La mail è stata inoltrata con successo.";

    } else {
    // ALTRIMENTI...

    echo "Si sono verificati dei problemi nell'invio della mail.";

    }

    ?> 
    Non ricevo nessun errore, la mail mi arriva correttamente con l'allegato ma questo è vuoto. Dove sbaglio?

    Ciao e grazie!
    Luigi
    Luigi

  2. #2
    Ciao,

    Non capisco come fa ad inviare la mail. Tramite quale applicazione invia la mail? Con il client installato sul PC?

    Ho provato il tuo codice, adattandolo al mio server, ma mi dice sempre che si sono verificati problemi.

    Puoi spiegarmi un po'?

  3. #3
    Utente di HTML.it
    Registrato dal
    Oct 2002
    Messaggi
    136
    Ho fatto le prove mettendo il tutto sul server web e provando ad inviare la mail al mio indirizzo.
    Sono in hosting presso consultingweb e l'invio della mail funziona. L'unica cosa è l'allegato sempre vuoto!

    Ciao e grazie per il tuo interesse!

    Luigi
    Luigi

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.