Visualizzazione dei risultati da 1 a 4 su 4
  1. #1

    [Invio Pdf tramite mail] Sapreste aiutarmi a capire perchè queso codice non va?

    Salve a tutti, ho scritto questo codice seguendo varie guide che permette di completare un form premere invio ed inviare la mail aggiungendo ad essa un allegato pdf da me indicato. Il file di partenza per l'inserimento dell'allegato l'ho testato e funziona bene, quando però ho accorpato la mia gestione all'esempio qualcosa non è andata a buon fine infatti pare non funzionare. Vi predo di darmi un aiuto, ecco il codice:

    Codice PHP:
      <?php
        
    // Il file si chiama form.php
        
    if (!isset($_GET['op'])){
        
    $op 'mostra';
        }else{
        
    $op =$_GET['op'];
        }
         
        switch (
    $op){
        case 
    'invia':
        
    // Cambia con la tua mail
        
    $email_to $_POST['Field2'];

        
    // Ottiene i campi
        
    $email $_POST['Field21'];

        if(!isset(
    $_POST['Field9'])){
            
    $oggetto "Nessun oggetto";
        }else{
            
    $oggetto $_POST['Field9'] . " Le ha inviato questo messaggio dal sito [url]MIO SITO[/url]";
        }

        if(!isset(
    $_POST['Field1'])){
            
    $testo "Nessun testo";
        }else{
            
    $testo $_POST['Field1'];
        }
        
        
    //create a boundary string. It must be unique
        //so we use the MD5 algorithm to generate a random hash
        
    $random_hash md5(date('r'time()));
        
    //define the headers we want passed. Note that they are separated with \r\n
        
    $headers "From:" $email "\r\nReply-To:" $email;
        
    //add boundary string and mime type specification
        
    $headers .= "\r\nContent-Type: multipart/mixed; boundary=\"PHP-mixed-".$random_hash."\"";
        
    //read the atachment file contents into a string,
        //encode it with MIME base64,
        //and split it into smaller chunks
        
    $attachment chunk_split(base64_encode(file_get_contents('download/file.pdf')));
        
    //define the body of the message.
        
    ob_start(); //Turn on output buffering
        
    ?>
        --PHP-mixed-<?php echo $random_hash?> 
        Content-Type: multipart/alternative; boundary="PHP-alt-<?php echo $random_hash?>"
        
        --PHP-alt-<?php echo $random_hash?> 
        Content-Type: text/plain; charset="iso-8859-1"
        Content-Transfer-Encoding: 7bit

        Hello World!!!
        This is simple text email message.

        --PHP-alt-<?php echo $random_hash?> 
        Content-Type: text/html; charset="iso-8859-1"
        Content-Transfer-Encoding: 7bit

        <?php echo $testo?> 

        --PHP-alt-<?php echo $random_hash?>--

        --PHP-mixed-<?php echo $random_hash?> 
        Content-Type: application/pdf; name="file.pdf" 
        Content-Transfer-Encoding: base64 
        Content-Disposition: attachment 

        <?php echo $testo?> 

        <?php
        
    //copy current buffer contents into $message variable and delete current output buffer
        
    $testo ob_get_clean();
        
        if (
    mail($email_to,  $oggetto$testo$headers)){
             
    // Modifica qui il messaggio di ringraziamento
            
    echo '<p style="text-align:center;">Grazie... Se i dati inseriti sono corretti riceverai presto una risposta.</p>'
        }else{
            echo 
    '<p style="text-align:center;">Impossibile inviare la mail, riprovare</p>';
    }
    }
    ?>

    Grazie 1000 a tutti.
    MondoLibero: Informazione Libera, Varia ed Eventuale
    Sito di informazione varia ed eventuale. Quando ho voglia scrivo di ciò che mi pare. Pubblico guide, recensioni, notizie, critiche e tutto ciò che mi passa sotto mano e che penso sia interessante.

  2. #2
    Ciao,
    di preciso cosa non funziona?

    Ad una occhiata veloce mi pare che il secondo:
    Codice PHP:
    <?php echo $testo?>
    dovrebbe essere in realtà:
    Codice PHP:
    <?php echo $attachment ?>
    Alessandro
    Full Stack Developer presso Advice Lab
    Bonus Bitcoin
    Moon Bitcoin

  3. #3
    Originariamente inviato da Magicale
    Ciao,
    di preciso cosa non funziona?

    Ad una occhiata veloce mi pare che il secondo:
    Codice PHP:
    <?php echo $testo?>
    dovrebbe essere in realtà:
    Codice PHP:
    <?php echo $attachment ?>
    Alessandro
    Ti ringrazio per la replica, quello sicuro era un problema, ma continua ad arrivare la mail senza allegato.
    MondoLibero: Informazione Libera, Varia ed Eventuale
    Sito di informazione varia ed eventuale. Quando ho voglia scrivo di ciò che mi pare. Pubblico guide, recensioni, notizie, critiche e tutto ciò che mi passa sotto mano e che penso sia interessante.

  4. #4
    Sono riuscito modificando l'utilizzo del codice e scrivendo una funzione:

    Codice PHP:
    function SendMail($to$from$subject$testo)
       {
          
    $mime_boundary "<<<--==+X[".md5(time())."]";
          
    $fileContent chunk_split(base64_encode(file_get_contents('Directory del tuo file - Nome del File Con stensione')));
          
          
    $headers .= "From: $from\r\n"
          
    $headers .= "Reply-To: $from\r\n"
          
    $headers .= "MIME-Version: 1.0\r\n";
          
    $headers .= "Content-Type: multipart/mixed;";
          
    $headers .= " boundary=\"".$mime_boundary."\"";
          
          
    $message .= "This is a multi-part message in MIME format.\r\n";
          
    $message .= "\r\n";
          
    $message .= "--".$mime_boundary."\r\n";
          
    $message .= "Content-Type: text/plain; charset=\"iso-8859-1\"\r\n";
          
    $message .= "Content-Transfer-Encoding: 7bit\r\n";
          
    $message .= "\r\n";
          
    $message .= "$testo\r\n";
          
    $message .= "--".$mime_boundary."\r\n";
          
          
    $message .= "Content-Type: application/pdf;\r\n"//Modificare qui l'estensione del file
          
    $message .= " name=\"Nome del File Con stensione\"\r\n";
          
    $message .= "Content-Transfer-Encoding: base64\r\n";  //"Content-Transfer-Encoding: quoted-printable\r\n"; 
          
    $message .= "Content-Disposition: attachment;\r\n";
          
    $message .= " filename=\"Nome del File Con stensione\"\r\n";
          
    $message .= "\r\n";
          
    $message .= $fileContent;
          
    $message .= "\r\n";
          
    $message .= "--".$mime_boundary."\r\n";
          
          if ( 
    mail($to$subject$message$headers) ){
             
    // Modifica qui il messaggio di ringraziamento
            
    echo '<p style="text-align:center;">Grazie... Se i dati inseriti sono corretti riceverai presto una risposta.</p>'
          }else{
            echo 
    '<p style="text-align:center;">Impossibile inviare la mail, riprovare</p>';
          }
       } 
    Ho indicato con del testo dove aggiungere Nome del file, directory e tipo del file.
    MondoLibero: Informazione Libera, Varia ed Eventuale
    Sito di informazione varia ed eventuale. Quando ho voglia scrivo di ciò che mi pare. Pubblico guide, recensioni, notizie, critiche e tutto ciò che mi passa sotto mano e che penso sia interessante.

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.