Ho la seguente funzione che invia un e-mail con l'allegato

codice:
function InvioEmail($MailDestinatario, $Oggetto, $Contenuto, $nomeAllegato, $pathAllegato)
{
   $Mittente = "info@mittente.net";

   $boundary = md5(uniqid(microtime()));
   // INTESTAZIONI DELLA MAIL
   $mail_headers = "MIME-version: 1.0\n";
   $mail_headers .= "Content-type: multipart/mixed;boundary=\"$boundary\"\r\n";
   $mail_headers .= "From: $Mittente\r\n";

   $mail_body = "--$boundary\n";
   $mail_body .= "Content-Type: text/plain;charset=us-ascii\n";
   $mail_body .= "Content-Transfer-Encoding: 7bit\n\n"; 
   $mail_body .= "$Contenuto\n\n";
   $mail_body .= "--$boundary\n";
   if ($nomeAllegato!="")
	{
		$file_type = filetype ($pathAllegato. $nomeAllegato);
//		$file_type="application/pdf";
		$file_size = filesize ($pathAllegato. $nomeAllegato);
			
		// APRIAMO L'ALLEGATO PER LEGGERLO E CODIFICARLO
		$file = @fopen($pathAllegato. $nomeAllegato, "r");
		$contents = @fread($file, $file_size);
		$encoded_attach = chunk_split(base64_encode($contents));
		@fclose($file);
				
		$mail_headers .= "X-attachments: $nomeAllegato\n";
		$mail_body .= "Content-type: $file_type; name=\"$nomeAllegato\"\n";
		$mail_body .= "Content-Transfer-Encoding: base64\n";
		$mail_body .= "$encoded_attach\n";
		$mail_body .= "--$boundary--\n";
			
	}

	if(@mail($MailDestinatario, $Oggetto, $mail_body, $mail_headers)) 
		{$messaggioMail=  "Ok";}
	else 
		{$messaggioMail = "Errore";}
	return $messaggioMail;
}
Funzionerebbe da paura se non fosse che il file mi arriva danneggiato

Qualcuno mi sa dire dove sbaglio !!!