Extrair anexos de e-mails do outlook e do servidor de e-mails MS Exchange

Boa tarde Pessoal,

Preciso ler todos os e-mails do outlook e extrair seus anexos para um diretório comum. Só não tenho idéia de como fazer isso. Alguém pode me ajudar?

Boa Tarde,

existe uma API chamada JACOB, que permite vc executar funcoes em componentes activex (inclusive do outlook). Vc pode encontrá-la nesse link: http://sourceforge.net/projects/jacob-project/

Qndo vc fizer o download, é só importar o jar e por a sua DLL no raiz onde vc roda seu binário java. Aí o código pra acessar seus emails seria mais ou menos assim:

ActiveXComponent outlook = new ActiveXComponent(“Outlook.Application”);

Dispatch mainDispatcher = outlook.getObject();

Dispatch appDispatcher = Dispatch.call(mainDispatcher, “GetNamespace”, “MAPI”).toDispatch();

//retorna o primeiro nivel de pastas
Dispatch foldersDispatch = Dispacth.call(appDispatcher, “Folders”).toDispatch();

int total = Dispatch.call(foldersDispatch, “Count”).toInt();

for(int i=1; i<=total; i++){
Dispatch folderDispatcher = Dispatch.call(foldersDispatch, “Item”, new Integer(i)).toDispatch();
//Retorna o segundo nivel de pastas
Dispatch subfoldersDispatcher = Dispacth.call(appDispatcher, “Folders”).toDispatch();

    int subTotal = Dispatch.call(subfoldersDispatcher, "Count").toInt();

    for(int j=1; j<=subTotal; j++){
           Dispatch subFolderDispatcher = Dispatch.call(subfoldersDispatcher, "Item", new Integer(j)).toDispatch();
	//retorna todos os emails da pasta
       Dispatch mailsDispatcher = Dispatch.call(subFolderDispatcher, "Items").toDispatch());
           
       int mailsTotal = Dispatch.call(mailsDispatcher, "Count").toInt();

       for(int k=1; k<=mailsTotal; k++){
		Dispatch mailDispatcher = Dispatch.call(mailsDispatcher, "Item", new Integer(k)).toDispatch();
		
		Dispatch mailAttachments = Dispatch.call(mailDispatcher, "Attachments")toDispatch();
		//pega o primeiro attachment do email
		Dispatch mailAttachment = Dispatch.call(mailAttachments, "Item", new Integer(0)).toDispatch();

		//pega o nome do arquivo
		String nome = Dispatch.call(mailAttachment, "FileName").toString();

		//salva o arquivo em algum lugar no FS
		Dispatch.call(mailAttachment, "SaveAsFile", "C:\Temp");

       }
    }

}

[]'s

Muito obrigado wchevreuil,

Esta mesma estrutura pode ser usada para o MS Exchange (servidor de e-mails)? E quanto aos demais MTA’s como o PostFix e o SendMail, ambos para Linux?

[quote=juceliohv]Muito obrigado wchevreuil,

Esta mesma estrutura pode ser usada para o MS Exchange (servidor de e-mails)? E quanto aos demais MTA’s como o PostFix e o SendMail, ambos para Linux?[/quote]

O programa que lhe foi passado funciona apenas em Windows, devido ao uso da biblioteca Jacob. Estude sobre IMAP e POP3 para pegar os emails nesses outros ambientes.

Sim, o JACOB só serve pra vc conseguir interagir com componentes Activex disponíveis no Windows, na máquina onde o programa java estiver executando. Se vc quiser ler emails diretamente do servidor de email, vc deve usar a JavaMail API.

[]'s