Invio allegato da form

Buongiorno a tutti,

avrei un problemino col form che sto realizzando, che, oltre ai normali campi da compilare, prevede l'invio di un allegato alla mia casella email. L'invio va a buon fine e nella mia email ricevo il messaggio con l'allegato. Il problema è che l'allegato risulta danneggiato e quindi non lo posso aprire.

Posto qui sotto il codice che ho utilizzato:

#CARATTERISTICHE FILE ALLEGATO 
$nomefile_tmp = $_FILES["allegato"]["tmp_name"]; 
$tipoallegato = $_FILES["allegato"]["type"]; 
$nomeallegato = $_FILES["allegato"]["name"]; 
#DATI OTTENUTI DAGLI ALTRI CAMPI DEL FORM 
$testo_email = "Ruolo: $ruolo\nNome: $nome\nCognome: $cognome\nEmail: $email\nNote: $note"; 
#CREAZIONE FILE DI LETTURA ALLEGATO         
$textfile = fopen($nomefile_tmp,"rb"); 
$dati_allegato = fread($textfile,filesize($nomefile_tmp)); 
fclose($textfile); 
#CODIFICA ALLEGATO SU BASE64         
$dati_allegato = chunk_split(base64_encode($dati_allegato)); 
#NUMERO PER CODICE DELIMITATORE 
$numero_casuale = md5(time()); 
#INIZIO DELIMITATORE 
$cod_delimitatore = "----=_NextPart_$numero_casuale";  
#PARAMETRI INVIO EMAIL     
$tipo_email = "MIME-Version: 1.0\nContent-type: multipart/mixed;boundary=$cod_delimitatore"; 
$headers = "From: miaemail@miaemail\n$tipo_email"; 
$headers .= "BCC: altraemail@altraemail[/email]\r\n"; 
$destinatario = "miaemail@miaemail"; 
$oggetto = "Nuovo messaggio dal sito, sezione: Lavora con noi"; 
#MESSAGGIO TESTO          
$messaggio_a = "This is a multi-part message in MIME format.\n\n". 
"--$cod_delimitatore\n". 
"Content-Type: text/plain; charset=\"iso-8859-1\"\n". 
"Content-Transfer-Encoding: 7bit\n\n". 
"$testo_email\n\n"; 
#MESSAGGIO ALLEGATO         
$messaggio_b = "--$cod_delimitatore\n". 
"Content-Type: $tipoallegato; name=\"$nomeallegato\"\n". 
"Content-Disposition: attachment; filename=\"$nomeallegato\"\n". 
"Content-Transfer-Encoding: Base64\n\n". 
"$dati_allegato\n\n". 
"--$cod_delimitatore--\n"; #FINE DELIMITATORE 
#UNISCO MESSAGGIO TESTUALE CON ALLEGATO         
$messaggio = "$messaggio_a$messaggio_b"; 
#INVIO EMAIL 
mail($destinatario, $oggetto, $messaggio, $headers); 
#REINDIRIZZO PAGINA 
header("Location: ../contatti.php?id=lavora_con_noi&rs=email_sent"); 

Qualcuno vede qualche errore nel codice per caso?

inviato 6 anni fa
demaz11
X 0 X

Perché non usi una classe tipo PHPMailer, Zend_Mail o swift mailer?

Eviteresti tutte le complicazioni insite nella creazione manuale della mail con allegato.

 :bye:

risposto 6 anni fa
Gianni Tomasicchio
X 0 X
Effettua l'accesso o registrati per rispondere a questa domanda