Ciao raga, ho un piccolo ma spinoso problema con l'invio di allegati tramite un form da me creato, semplicemente oggetto allegato e messaggio. Tutto funziona perfettamente tranne se scarico la mail con thunderbird(non ho ancora visto con altri client). In pratica scaricando la mail l'allegato viene mandato ed è possibile scaricarlo, ma all'nterno del testo della mail vi è anche tutto il codice del file:
Per aiutarmi vi posto il codice php che stò usando e che onestamente ho trovato in rete(tutti quelli che ho trovato sono uguali a questo):
Spero possiate aiutarmi.codice:<?php $nome=$_POST['nome']; $cognome=$_POST['cognome']; $mail=$_POST['mail']; $mail_to_prova="mail di prova a cui inviare"; $messaggio=stripslashes($_POST['messaggio']); $subject=stripslashes($_POST['oggetto']); $allegato=$_FILES['allegato']['tmp_name']; $allegato_name=$_FILES['allegato']['name']; $allegato_type=$_FILES['allegato']['type']; // Creo 2 variabili che riempirò più avanti... $headers = "From: " . "mail di invio"; $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($file, filesize($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/html; charset=\"iso-8859-1\"\r\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;filename=\"{$allegato_name}\"\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"; } else { $msg = $messaggio; } // Invio la mail if (mail($mail_to_prova, $subject, $msg, $headers)) { echo " Mail inviata con successo!</p>"; }else{ echo " Errore!</p>"; } ?>
Grazie in anticipo!

Rispondi quotando