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

    Problemi con invio email con allegato

    Ciao a tutti prendendo spunto da vari 3D, pillole e articoli su freephp ho iniziato a creare uno script per l'invio di mail che supporta l'allegato (e inoltre prima di spedirlo lo zippa)
    Lo script funziona alla grande unico problema non mi spedisce il testo della mail se metto l'allegato... ecco il codice
    Codice PHP:
    <?php
    function missing_val()
    {
        echo 
    "Un dato necessario per l'invio della mail è mancante";
        exit;
    }

    if(!
    file_exists("pclzip.lib.php"))
    {
        echo 
    "Una libreria indispensabile per lo script non è stata trovata";
    }
    else
    {
        include(
    "pclzip.lib.php");
        
    $mittente "me@localhost";
        
    $reply $mittente;
        
    $testo $_POST['testo'];
        if(!isset(
    $_POST['address']) && !isset($_POST['subject']))
        {
            
    missing_val();
        }
        else
        {
            
    $destinatario $_POST['address'];
            
    $oggetto $_POST['subject'];
        }
        if(!empty(
    $_FILES['attch']['tmp_name']))
        {
            
    //MAIL CON ALLEGATO (qui non mi spedisce il testo della mail)
            
    $attch_tmp $_FILES['attch']['tmp_name'];
            
    $attch_name $_FILES['attch']['name'];
            
    move_uploaded_file($attch_tmp,"./tmp/".$attch_name);
            
    $n explode(".",$attch_name);
            
    $l count($n);
            
    $n[$l-1] = "zip";
            
    $nome implode(".",$n);
            
    $zip = new PclZip("./tmp/".$nome);
            
    $zip->add("./tmp/"."$attch_name",PCLZIP_OPT_REMOVE_PATH"tmp");
            
    $attch_type mime_content_type("./tmp/".$nome);
            
    $attch_size filesize("./tmp/".$nome);
            
            
    $boundary md5(uniqid(microtime()));
            
            
    $intestazioni "From: $mittente\n"
            
    $intestazioni .= "Reply-To: $reply\n";
            
    $intestazioni .= "MIME-version: 1.0\n";
            
    $intestazioni .= "Content-type: multipart/mixed;\n boundary=\"$boundary\"\n";
            
    $intestazioni .= "Content-transfer-encoding: 7BIT\nX-attachments: $nome";
            
            
    $body_top "--Message-Boundary\n"
            
    $body_top .= "Content-type: text/html; charset=iso-8859-1\n"
            
    $body_top .= "Content-transfer-encoding: 7BIT\n"
            
    $body_top .= "Content-description: Mail message body\n"
            
            
    $msg_body $body_top $testo
            
            
    $filez fopen("./tmp/".$nome"r"); 
            
    $contents fread($filez$attch_size); 
            
    $encoded_attach chunk_split(base64_encode($contents)); 
            
    fclose($filez); 
            
            
    $msg_body .= "\n\n--$boundary\n"
            
    $msg_body .= "Content-type: $attch_type; name=\"$nome\"\n"
            
    $msg_body .= "Content-Transfer-Encoding: BASE64\n"
            
    $msg_body .= "Content-disposition: attachment; filename=\"$nome\"\n\n";
            
    $msg_body .= "$encoded_attach\n"
            
    $msg_body .= "--$boundary--\n"
            
            
    unlink("./tmp/".$attch_name);
            
    unlink("./tmp/".$nome);
        }
        else
        {
            
    //MAIL SENZA ALLEGATO (qui il testo e' spedito)
            
    $intestazioni "From: $mittente\n"
            
    $intestazioni .= "Reply-To: $reply\n";
            
    $intestazioni .= "MIME-Version: 1.0\r\n";
            
    $intestazioni .= "Content-type: text/html; charset=iso-8859-1\r\n";
            
            
    $msg_body $testo;
        }
        if(@
    mail($destinatario,$oggetto,$msg_body,$intestazioni))
        {
            echo 
    "Mail inviata con successo";
        }
        else
        {
            echo 
    "Errore nell'invio della mail";
        }    
    }
    ?>
    Ho provato a fare un echo di $testo e la variabile è settata, ho provato a fare echo di $msg_body e mi sembra che sia a posto... se qualcuno ha una soluzione plz non so più cosa inventarmi

  2. #2
    Uppetino

    Se faccio echo $msg_body ottengo:

    --Message-Boundary
    Content-type: text/html; charset=iso-8859-1
    Content-transfer-encoding: 7BIT
    Content-description: Mail message body

    Messaggio di prova

    --86725c150167a4961b29391a3be91909
    Content-type: application/zip; name="SenzaTitolo1.zip"
    Content-Transfer-Encoding: BASE64
    Content-disposition: attachment; filename="SenzaTitolo1.zip"

    UEsDBAoAAAAIAASSLjNT9LxSHAAAACkAAAAQAAAAU2VuemFUaX RvbG8xLmNwcFPOzEvOKU1JVbBJ
    z9FPz9HLsOPlUkYVKwULAgBQSwECFAAKAAAACAAEki4zU/S8UhwAAAApAAAAEAAAAAAAAAAAAAAA
    AAAAAAAAU2VuemFUaXRvbG8xLmNwcFBLBQYAAAAAAQABAD4AAA BKAAAAAAA=

    --86725c150167a4961b29391a3be91909--

    A me sembra giusto allora perchè la scritta "Messaggio di prova" non arriva???

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.