24-03-2009 Luis Artola
Éste ejemplo funciona para mails multipart que codifican los adjuntos en base64. Tengo entendido que podrían venir codificados de otras maneras. Pero en los ejemplos que probamos funcionaban bien. Utilizamos Zend_Mail que es parte del Zend Framework.
$message = $mail->getMessage(1);//zend mail cogerá todos los mensajes,para éste ejemplo nos quedamos con el primero
//un mail llega en diferentes "partes". Nosotros buscamos el adjunto$part = $message->getPart(1);//esto es lo que más nos costó, descubrir que viene codificado y que hay que descodificarlo
$file_content = base64_decode($part->getContent());
$nombre_archivo = '/pathdondeguardar/nombrearchivo.ext';
$contenido = $file_content;
// Asegurarse primero de que el archivo existe y puede escribirse sobre él.
if (is_writable($nombre_archivo)) {
if (!$gestor = fopen($nombre_archivo, 'a')) {
// echo "No se puede abrir el archivo ($nombre_archivo)";
exit;
}
// Escribir $contenido a nuestro arcivo abierto.
if (fwrite($gestor, $contenido) === FALSE) {
//echo "No se puede escribir al archivo ($nombre_archivo)";
exit;
}
fclose($gestor);
} else {
echo "No se puede escribir sobre el archivo $nombre_archivo";
}