Se você busca uma forma de ler um ou mais e-mails e salvar o anexo contido em cada mensagem. Após instalar o módulo do IMAP no PHP, criei um arquivo chamado lermail.php com o seguinte conteúdo:
<?php
/* Ler um e-mail e salvar o TXT em anexo */
//Conecta-se ao MailServer
$mbox = imap_open("{webmail.uol.com.br}INBOX",
"seuemail@uol.com.br", "senha") or
die("Can't connect: " . imap_last_error());
//Lê todas as mensagens
for($m = 1; $m <= imap_num_msg($mbox); $m++){
//Pega a estrutura da mensagem
$estrutura = imap_fetchstructure($mbox, $m);
//Da estrutura, pega o nome do anexo. Dê um print_r na $estrutura para ver mais detalhes
$nomeAnexo = $estrutura->parts[1]->parameters[0]->value;
//Da mensagem, pega o conteúdo do anexo
$dados = imap_base64(imap_fetchbody($mbox, $m, 2));
//Cria um arquivo com o nome do anexo
$arq = fopen($nomeAnexo,"w");
//Grava o conteúdo do anexo no novo arquivo.
fwrite($arq, $dados);
//Fecha o novo arquivo
fclose($arq);
}
//Fecha a conexão com o MailServer
imap_close($mbox);
?>
Espero ter colaborado com a sua necessidade.
Fonte: Sidney Palmeira (sidneypalmeira.wordpress.com)

Essa parte
//Da estrutura, pega o nome do anexo. Dê um print_r na $estrutura para ver mais detalhes
$nomeAnexo = $estrutura->parts[1]->parameters[0]->value;
Ela nao esta retornando o Nome
Retorna iso+algumacoisa que faz parte da codificação utf8 ou outro!!
dei um print_r
Aparece o nome do arquivo
na ante-penultima opção do array !!
Olá Ricardo, você pode usar assim, em alguns casos deve ser alterado o parameters para que possa pegar o dado correto, porém isso depende de cada serviço de e-mail.
$nomeAnexo = $estrutura->parts[1]->parameters[1]->value;