Visualizzazione dei risultati da 1 a 5 su 5

Discussione: Problema con allegato

  1. #1

    Problema con allegato

    Ciao a tutti.
    Ho trovato in rete questo codice che permette di allegare ad una mail un file .doc -
    Siccome ho l'esigenza di inviare invece file jpg, chi può autarmi nella modifica?
    Grazie in anticipo.

    Codice PHP:
    <html>
    <head>
    <title>Send mail with attach</title>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
    </head>
    <body bgcolor="#D2D2D2" leftmargin="3" topmargin="3" marginwidth="0" marginheight="0" text="#000000">
    <?
    function validate_upload($thefile) {
        global 
    $thefile_type$thefile_name$thefile_size;
      
    $my_max_file_size     "102400"# in bytes

        
    $registered_types = array(
                        
    "application/msword" => ".doc",
                        
    "application/octet-stream" => ".doc"
                        
    ); # these are only a few examples, you can find many more!
        
    $allowed_types = array("application/msword""application/octet-stream");
        
    $start_error "\n";
        if (
    $thefile == "none") { # do we even have a file?
            
    $error .= "\n- Nessun documento allegato.
    "
    ;
        } else { 
    # check if we are allowed to upload this file_type
            
    if ($thefile_size>$my_max_file_size$error .= "\n- Il file allegato supera la dimensione massima consentita.
    "
    ;
            if (!
    in_array($thefile_type$allowed_types)) {
                
    $error .= "\n- Il file che hai inserito non &egrave; del tipo richiesto:
                            
    \n"
    ;
                while (
    $type current($allowed_types)) {
                    
    $error .= "\n" $registered_types[$type] . " (" $type ")
    "
    ;
                    
    next($allowed_types);
                }
                
    $error .= "\n";
            }
            if (
    $error) {
                
    $error $start_error $error "\n";
                return 
    $error;
            } else {
                return 
    false;
            }
        }
    # END validate_upload
    ?> 
    <font face="Arial, Helvetica, sans-serif" size="2">

    <?
    if ($op=="invio") {
        
    $error=0;
        
    $msg="";
        if (
    $nome=="") {
            
    $error=1;
            
    $msg.="- Il campo nome è vuoto.
    "
    ;
        }
        if (
    $cognome=="") {
            
    $error=1;
            
    $msg.="- Il campo cognome è vuoto.
    "
    ;
        }
        if (
    $email=="") {
            
    $error=1;
            
    $msg.="- Il campo email è vuoto.
    "
    ;
        }
        if (
    $email!="" && !eregi("^[_\.0-9a-z-]+@([0-9a-z][0-9a-z-]+\.)+[a-z]{2,3}$",$email)) {
            
    $error=1;
            
    $msg.="- L'email inserita non è valida.
    "
    ;    
        }
        if (
    $commento=="") {
            
    $error=1;
            
    $msg.="- Il campo commento è vuoto.
    "
    ;
        }
        
    $error_file="";
        if (!
    $thefile || $thefile=="none" || $thefile=="") {
            
    $error=1;
            
    $msg.="- Non hai inserito il curriculum.
    "
    ;
        } else 
    $error_file validate_upload($thefile);
        if (
    $error==|| $error_file!="") {
            echo
    "

    Attenzione! Si sono verificati i seguenti errori:
    $msg
    $error_file
    <a href=\"javascript:history.back()\">Clicca qui</a> per reinserire i dati."
    ;    
        } else {
            
    $emailto="myemail@mysite.com"// INERIRE L'EMAIL QUI!!
            
    $data=date("j/m/Y");
            
    $ora=date("h:i:s");
            
            
    $headers "MIME-Version: 1.0\n";
            
    $headers .= "Content-Type: multipart/mixed; boundary=\"XX-1234DED00099A\"\n";
            
    $headers .= "Content-Transfer-Encoding: 7bit\n";
            
    $headers .= "From: $email\n";
            
            
    $messaggio="--XX-1234DED00099A\n";
            
    $messaggio.="Content-Type: text/plain; charset=iso-8859-1\n";
            
    $messaggio.="Content-Transfer-Encoding: 7bit\n\r";

            
    $messaggio.="Curriculum inviato il $data alle $ora\n\r\nDati inseriti\n";
            
    $messaggio.="Nome: $nome\n\rCognome: $cognome\n";
            if (
    $telefono!=""$messaggio.="Telefono: $telefono\n";
            
    $messaggio.="Email: $email\nCommento:\n$commento\n";
            
    $oggetto_send="Invio Curriculum";
            
            
            
    $messaggio.="--XX-1234DED00099A\n";
            
    $messaggio.="Content-Type: application/octet-stream; name=\"curriculum.doc\"\n";
            
    $messaggio.="Content-Transfer-Encoding: base64\n";
            
    $messaggio.="Content-Description: \"Curriculum\"\n";
            
    $messaggio.="Content-Disposition: attachment\n\r";
            
            
    $fp=@fopen($thefile"r");
            if (
    $fp) {
                
    $data fread($fpfilesize($thefile));    
            }
            
    $curr base64_encode($data);
            
    $messaggio .= "$curr\n\r--XX-1234DED00099A--\n";
            if (!
    mail($emailto$oggetto_send$messaggio$headers)) {
                echo
    "
    [b]Attenzione.[/b]
    Si sono verificati degli errori durante l'invio della Email.

                Vi preghiamo di riprovare <a href=\"javascript: history.back()\">cliccando qui.</a>

                Se l'errore persiste Vi invitamo a riprovare più tardi. Grazie."
    ;
            }
            else {
                
    $messaggio_risposta="Grazie per averci contattato.\n\rIl vostro curriculum è stato inoltrato al responsabile del personale.\n\r\n\rDati inseriti\n";
                
    $messaggio_risposta.="Nome: $nome\n\rCognome: $cognome\n\r";
                if (
    $telefono!=""$messaggio_risposta.="Telefono: $telefono\n\r";
                
    $messaggio_risposta.="Commento:\n\r$commento\n\r\n\r";
                
    $messaggio_risposta.="Distinti saluti,\n\r";
                
    $oggetto2="Curriculum inoltrato";
                
    mail($email$oggetto2$messaggio_risposta,"From: NOME_SITO <$emailto>");
                echo 
    "
    [b]Email inviata correttamente.[/b]

                
    I dati inseriti sono i seguenti:

    "
    ;
                echo
    "Nome:[b] $nome [/b]

                Cognome:[b] 
    $cognome[/b]
    "
    ;
                if (
    $telefono!="") echo"Telefono: [b]$telefono[/b]
    "
    ;
                echo
    "Email: [b]$email[/b]
    Commento:[b] "
    .nl2br($commento)."[/b]

                

    Grazie per averci contattato."
    ;
            }
        }
        
    } else {
    ?>
                

    Form per invio curriculum


          <form enctype="multipart/form-data" method="post" action="<?=$PHP_SELF?>" name="contatti">
            <table width="550" border="0" cellspacing="3" cellpadding="0">
              <tr> 
                <td>Nome *</td>
                <td> 
                  <input type="text" name="nome" size="30">
                </td>
              </tr>
              <tr> 
                <td>Cognome *</td>
                <td> 
                  <input type="text" name="cognome" size="30">
                </td>
              </tr>
              <tr> 
                <td>Telefono</td>
                <td> 
                  <input type="text" name="telefono" size="30">
                </td>
              </tr>
              <tr> 
                <td>Email *</td>
                <td> 
                  <input type="text" name="email" size="30">
                </td>
              </tr>
              <tr> 
                <td>Allega il tuo curriculum
    (formato .doc - Max 100 Kb) *</td>
                <td>
                  <input type="hidden" name="MAX_FILE_SIZE" value="102400"> 
                  <input name="thefile" type="file" SIZE="35">
                </td>
              </tr>
              <tr> 
                <td>Commento *</td>
                <td> 
                  <textarea name="commento" wrap="VIRTUAL" cols="30" rows="5"></textarea>
                </td>
              </tr>
              <tr> 
                <td colspan="2">
                  <div align="center">
                      <input type="hidden" name="op" value="invio">
                    <input type="submit" name="Submit" value="Invia">
                    <input type="reset" name="Submit2" value="Reimposta">
                  </div>
                </td>
              </tr>
            </table>
          </form>
          <font size="1">I campi con l'asterisco sono obbligatori.

          <?
    }
    ?> 
           </font>
          
    </table>
    </body>

    </html>
    "La verità sarà sempre una bugia."

  2. #2
    NON ho letto TUTTO il codice, comunque prova a sostituire:

    $registered_types = array(
    "application/msword" => ".doc",
    "application/octet-stream" => ".doc"
    ); # these are only a few examples, you can find many more!
    $allowed_types = array("application/msword", "application/octet-stream");

    con:

    $registered_types = array(
    "application/msword" => ".doc",
    "application/octet-stream" => ".doc"
    "image/jpeg" => ".jpg"
    "image/pjpeg" => ".jpg"
    ); # these are only a few examples, you can find many more!
    $allowed_types = array("image/jpeg", "image/pjpeg");

    --------------------------------

    sostituisci:

    $messaggio.="Content-Type: application/octet-stream; name=\"curriculum.doc\"\n";

    con:

    $messaggio.="Content-Type: image/jpeg; name=\"".$_FILES["thefile"]["name"]."\"\n";

    oppure se non funziona:

    $messaggio.="Content-Type: image/jpeg; name=\"file.jpg\"\n";




    cosi' dovrebbe funzionare con i file jpg, naturalmente devi controllare e modificare tutte le stringhe di testo...
    by fede089

  3. #3
    Mi sono scordato delle dimensioni max del file.

    sostituisci:
    $my_max_file_size = "102400"; # in bytes

    con:
    $my_max_file_size = "512000"; # in bytes

    --------------------

    sostituisci:
    <input type="hidden" name="MAX_FILE_SIZE" value="102400">

    con:
    <input type="hidden" name="MAX_FILE_SIZE" value="512000">


    così le dimensioni massime del file sono 500 Kb, se vuoi cambiarle sostituisci 512000 con:
    (maxKb)x(1024)


    ricordati anche di modificare { $emailto="myemail@mysite.com"; // INERIRE L'EMAIL QUI!! } con la tua email
    by fede089

  4. #4
    Perfetto.
    Funziona una meraviglia.
    Ho dovuto fare solo 1 piccola modifica di punteggiatura

    Codice PHP:
    $registered_types = array(
    "application/msword" => ".doc",
    "application/octet-stream" => ".doc",
    "image/jpeg" => ".jpg",
    "image/pjpeg" => ".jpg"
    ); # these are only a few examples, you can find many more!
    $allowed_types = array("image/jpeg""image/pjpeg"); 
    L'unica cosa è che ho dovuto dividere il form dal codice php perchè su un server con php 5.2.0 non funziona mentre su un altro con versione php 4.4.1 fuziona perfettamente.

    Grazie mille davvero.

    PS E se volessi aggiungere un altro allegato? Nel senso di voler inviare due foto contemporaneamente....
    "La verità sarà sempre una bugia."

  5. #5
    Originariamente inviato da kenzo2000
    Perfetto.
    Funziona una meraviglia.
    sono contento per te!

    PS E se volessi aggiungere un altro allegato? Nel senso di voler inviare due foto contemporaneamente....
    Si deve aggiungere un altro campo file nel form ed un'altra "parte" all'email...

    Dopo questo:
    Codice PHP:
        if (!$thefile || $thefile=="none" || $thefile=="") { 
            
    $error=1
            
    $msg.="- Non hai inserito il curriculum.
    "

        } else 
    $error_file validate_upload($thefile); 
    Aggiungi:
    Codice PHP:
        if (!$thefile2 || $thefile2=="none" || $thefile2=="") { 
            
    $error=1
            
    $msg.="- Non hai inserito il curriculum2.
    "

        } else 
    $error_file validate_upload($thefile2); 
    ----------------------

    Sostituisci:
    Codice PHP:
    $messaggio .= "$curr\n\r--XX-1234DED00099A--\n"
    Con:
    Codice PHP:
    $messaggio .= "$curr\n\r--XX-1234DED00099A\n\n"
    ---------------------
    Dopo questo:
    Codice PHP:
             $curr base64_encode($data); 
            
    $messaggio .= "$curr\n\r--XX-1234DED00099A\n\n"
    Aggiungi:
    Codice PHP:
     $messaggio.="--XX-1234DED00099A\n"
    $messaggio.="Content-Type: image/jpeg; name=\"".$_FILES["thefile2"]["name"]."\"\n";
            
    // oppure: $messaggio.="Content-Type: image/jpeg; name=\"file2.jpg\"\n"; 
            
    $messaggio.="Content-Transfer-Encoding: base64\n"
            
    $messaggio.="Content-Description: \"Curriculum\"\n"
            
    $messaggio.="Content-Disposition: attachment\n\r"
             
            
    $fp=@fopen($thefile2"r"); 
            if (
    $fp) { 
                
    $data fread($fpfilesize($thefile2));     
            } 
            
    $curr base64_encode($data); 
            
    $messaggio .= "$curr\n\r--XX-1234DED00099A--\n"
    ---------------------

    Dopo questo (o dove vuoi):
    <input name="thefile" type="file" SIZE="35">

    aggiungi:
    <input name="thefile2" type="file" SIZE="35">


    Così credo dovrebbe funzionare... naturalmente il codice si può migliorare, vedi un po'

    fammi sapere se così, con due allegati, funziona

    ciao
    by fede089

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.