Descarga de archivos PHP ZIP

Aquí hay un código que descarga los archivos adjuntos de un servidor imap. Casi todos los tipos de archivos (pdf, doc, xls, etc.) se están descargando correctamente, donde algunos archivos zip dan el siguiente error:

"El archivo está en formato desconocido o dañado"

Código:

//data from imap server
$name = "xyz 123.zip";
$type = "APPLICATION";
$subtype = "ZIP";
$encoding = "BASE64";
$body = imap_base64($data);

header('Content-Description: File Transfer');
header('Content-Type: '. $type .'/'. $subtype);
header('Content-Disposition: attachment; filename='.$name);
header('Content-Transfer-Encoding: '.$encoding);
header('Expires: 0');
header('Cache-Control: must-revalidate');
header('Pragma: public');
ob_clean();
flush();
echo $body;

También si hago eco de los datos y los convierto en un archivo usando:

http://www.motobit.com/util/base64-decoder-encoder.asp

El archivo se está descargando correctamente. Por lo tanto, no hay problema en obtener el archivo del servidor. ¿A dónde me voy mal?

Respuestas a la pregunta(7)

Su respuesta a la pregunta