Ciao danieledani e benvenuto nel forum GT.

Hai verificato che $data contenga qualcosa?

Se si, modificherei intanto il pezzo di codice così:
[php]$fp=@fopen($attach, "rb");
if ($fp)
{
$data = fread ($fp, filesize($attach));
}
fclose($fp);
$allega = base64_encode($data);[/php]

Facci sapere.