Visualizzazione dei risultati da 1 a 3 su 3
  1. #1
    Utente di HTML.it
    Registrato dal
    Jun 2005
    Messaggi
    102

    Allegato che non si vede su webmail

    Salve a tutti,
    sto utilizzando uno script per farmi spedire email con allegati (es. documenti Word) da un form di una pagina web.

    L'email arriva correttamente e se la apro con Outlook o Outlook express è tutto ok...

    Se invece tento di aprirla con un servizio webmail tipo Tiscali, ho dei problemi con l'allegato:

    - il nome dell'allegato sparisce
    - al suo posto c'è un attachment generico di tipo testo col nome di "ATT0.txt" e se ci clicco sopra ottengo una videata di segni incomprensibili...(credo sia la decodifica base64).

    Qualcuno sa spiegarmi il motivo ed eventualmente darmi una mano?!? Grazie!!!

    Questo è lo script:

    Codice PHP:
    <?
    /****************************FUNCTION SENDMAIL**********************************/
    /** esempio utilizzo:
                 $destinatario = "info@overjeans.it";
                 $mittente = "Mario Rossi <mariorossi@tiscali.it>";
                 $oggetto = "Soggetto del messaggio";
                 $messaggio = "Questo è un messaggio di prova!\n";
                 
                 include('sendmail.php');
                 
                 $esito=mail($destinatario, $oggetto, $msg, $headers);
    **/
                          // Valorizzo le variabili relative all'allegato
                          
    $allegato $_FILES['allegato']['tmp_name'];
                          
    $allegato_type $_FILES['allegato']['type'];
                          
    $allegato_name $_FILES['allegato']['name'];

                          
    // Creo 2 variabili che riempirò più avanti...
                          
    $headers "From: " $mittente;
                          
    $msg "";

                          
    // Verifico se il file è stato caricato correttamente via HTTP
                          // In caso affermativo proseguo nel lavoro...
                          
    if (is_uploaded_file($allegato))
                          {
                            
    // Apro e leggo il file allegato
                              
    $file fopen($allegato,'rb');
                              
    $data fread($filefilesize($allegato));
                              
    fclose($file);

                            
    // Adatto il file al formato MIME base64 usando base64_encode
                              
    $data chunk_split(base64_encode($data));

                            
    // Genero il "separatore"
                            // Serve per dividere, appunto, le varie parti del messaggio.
                            // Nel nostro caso separerà la parte testuale dall'allegato
                              
    $semi_rand md5(time());
                              
    $mime_boundary "==Multipart_Boundary_x{$semi_rand}x";

                            
    // Aggiungo le intestazioni necessarie per l'allegato
                              
    $headers .= "\nMIME-Version: 1.0\n";
                              
    $headers .= "Content-Type: multipart/mixed;\n";
                              
    $headers .= " boundary=\"{$mime_boundary}\"";

                            
    // Definisco il tipo di messaggio (MIME/multi-part)
                              
    $msg .= "This is a multi-part message in MIME format.\n\n";

                            
    // Metto il separatore
                              
    $msg .= "--{$mime_boundary}\n";

                            
    // Questa è la parte "testuale" del messaggio
                              
    $msg .= "Content-Type: text/plain; charset=\"iso-8859-1\"\n";
                              
    $msg .= "Content-Transfer-Encoding: 7bit\n\n";
                              
    $msg .= $messaggio "\n\n";

                            
    // Metto il separatore
                              
    $msg .= "--{$mime_boundary}\n";

                            
    // Aggiungo l'allegato al messaggio
                              
    $msg .= "Content-Disposition: attachment;\n";
                              
    $msg .= " filename=\"{$allegato_name}\"\n";
                              
    $msg .= "Content-Transfer-Encoding: base64\n\n";
                              
    $msg .= $data "\n\n";

                            
    // chiudo con il separatore
                              
    $msg .= "--{$mime_boundary}--\n";
                          }
           
    /**************************** FINE FUNCTION SENDMAIL*****************************************/
    ?>

  2. #2
    consiglio? usa la classe phpmailer.
    Semplice da usare, fai quello che vuoi e non dà problemi con nessun webmail che io sappia.

  3. #3
    Utente di HTML.it L'avatar di mark2x
    Registrato dal
    Nov 2005
    Messaggi
    1,940
    La voglia di guardare il tuo codice proprio non la ho...

    In genere così succede quando non sono rispettati i boundary o le righe vuote prima/dopo di essi.
    Il consiglio è semplice: crea ed invia la mail con la tua classe, scaricala con Outlook Express, trascina il file di mail ricevuto sul desktop ed aprilo come testo.

    Di lì ti sarà chiaro se c'è qualche boundary messo male.

    [.:: JaguarXF ::.]
    __________________

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.