Ho messo assieme questo codice per l'invio di email con allegati dalla dimensione massima di 500000b.
Inizialmente funzionava... poi facendo delle modifiche non va più. Sapete aiutarmi?

IL FORM
codice:
<div id="form">
<form name="invioemail" action="http://mioindirizzo.it" method="POST" enctype="multipart/form-data">
    			
<input name="destinatario" type="hidden" value="mia@email.it">
                
<input name="nome" type="text" border="0" style="Verdana" value="" size="30">
<input name="cognome" type="text" border="0" style="Verdana" value="" size="30">
<input name="provenienza" type="text" border="0" style="Verdana" value="" size="30">

<input name="mittente" type="text" border="0" style="Verdana" value="" size="30">
<input name="oggetto" type="text" border="0" style="Verdana" value="" size="30">
          	
<input type="file" name="allegato" size="30">
<input name="maxsizefile" type="hidden" value="500000">
<textarea name="messaggio" class="inputTextarea" rows="10" cols="70"></textarea>

<input class="button"  width="130" name="button" type="submit" border="0" value="Invia l'email">
				
</form>
IL CODICE DI INVIO PHP
codice:
<?php
// Recupero il valore dei campi del form
$destinatario = $_POST['destinatario'];
$mittente = $_POST['mittente'];
$nome = $_POST['nome'];
$cognome = $_POST['cognome'];
$provenienza = $_POST['provenienza'];
$oggetto = $_POST['oggetto'];
$messaggio = $_POST['messaggio'];
// Valorizzo le variabili relative all'allegato
$allegato = $_FILES['allegato']['tmp_name'];
$allegato_type = $_FILES['allegato']['type'];
$allegato_name = $_FILES['allegato']['name'];
$allegato_size = $_FILES['allegato']['size'];
$maxsizefile = $_POST['maxsizefile'];


//*CONTROLLA INSERIMENTO VALORI*/
//*CONDIZIONE: se se il file allegato eccede le dimensioni massime consentite*///
if( $allegato_size > $maxsizefile ){
	echo "<h2 style=\"text-align:center;\">Invio email non effettuato.</h2>

Il file inserito eccede le dimensioni massime consentite!
<a href=\"javascript:(window.history.back(-1))\">Ritenta l'inserimento</a>.</p>";
						
//*CONDIZIONE: se i campi obbligatori sono stati riempiti*///
} elseif (trim($mittente) == "" OR trim($nome) == "" OR trim($cognome) == "" OR trim($oggetto) == "" OR trim($allegato) == "" OR trim($messaggio) == ""){
	echo "<h2 style=\"text-align:center;\">Invio email non effettuato.</h2>

I campi obbligatori devono essere riempiti!
<a href=\"javascript:(window.history.back(-1))\">Ritenta l'inserimento</a>.</p>";

//*SE TUTTO E' OK
} else {

	//*ANNULLA VIRGOLETTE E APICI
	$mittente=addslashes(stripslashes($titolo));
	$nome=addslashes(stripslashes($giorno));
	$cognome=addslashes(stripslashes($mese));
	$provenienza=addslashes(stripslashes($anno));
	$oggetto=addslashes(stripslashes($luogo));
	$messaggio=addslashes(stripslashes($testo));

	//*SISTEMA < >
	$mittente = str_replace("<", "&lt;", $titolo);
	$mittente = str_replace(">", "&gt;", $titolo);
	$nome = str_replace("<", "&lt;", $giorno);
	$nome = str_replace(">", "&gt;", $giorno);
	$cognome = str_replace("<", "&lt;", $mese);
	$cognome = str_replace(">", "&gt;", $mese);
	$provenienza = str_replace("<", "&lt;", $anno);
	$provenienza = str_replace(">", "&gt;", $anno);
	$oggetto = str_replace("<", "&lt;", $luogo);
	$oggetto = str_replace(">", "&gt;", $luogo);
	$messaggio = str_replace("<", "&lt;", $testo);
	$messaggio = str_replace(">", "&gt;", $testo);

	
	// 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($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/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";
	}
	else
	{
	  $msg = $messaggio;
	}
	
	// Invio la mail
	if (mail($destinatario, $oggetto, $msg, $headers))
	{
		echo "<h2 style=\"text-align:center;\">Invio email effettuato.</h2>

I contenuti sono stati inoltrati come segue:</p>";
	} else {
		echo "<h2 style=\"text-align:center;\">Invio email non effettuato.</h2>

Invio non riuscito! <a href=\"javascript:(window.history.back(-1))\">Ritenta l'invio</a>.</p>";
	}
	
}			
?>