Pessoal, bom dia.
Tenho uma demanda para desenvolver uma simples aplicação de email (no caso esta aplicação vai apenas ler os emails que estão na caixa de entrada). Pesquisei na internet e achei alguns exemplos do tipo, mas não consegui achar nada que fale em baixar o arquivo anexo do servidor. Tenho uma aplicação simples de exemplo que fiz aqui.
Segue:
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Properties;
import javax.activation.DataHandler;
import javax.mail.*;
import javax.mail.internet.InternetAddress;
public class ReadMultipartMail
{
public static void main(String[] args) throws NoSuchProviderException, MessagingException, IOException
{
String host = "pop.dzyon.com";
String username = "[email removido]";
String password = "senha";
Properties properties = System.getProperties();
Session session = Session.getDefaultInstance(properties);
Store store = session.getStore("pop3");
store.connect(host, username, password);
Folder folder = store.getFolder("inbox");
if(!folder.exists())
{
System.out.println("no INBOX");
System.exit(0);
}
folder.open(Folder.READ_WRITE);
Message[] msg = folder.getMessages();
for (int i = 0; i < msg.length; i++)
{
System.out.println("--------------------MESSAGE " + (i+1) + "--------------------------");
String from = InternetAddress.toString(msg[i].getFrom());
if(from != null)
{
System.out.println("From: " + from);
}
String replyTo = InternetAddress.toString(msg[i].getReplyTo());
if(replyTo != null)
{
System.out.println("Reply-to: " + replyTo);
}
String to = InternetAddress.toString(msg[i].getRecipients(Message.RecipientType.TO));
if(to != null)
{
System.out.println("To: " + to);
}
String subject = msg[i].getSubject();
if(subject != null)
{
System.out.println("Subject: " + subject);
}
Date sent = msg[i].getSentDate();
SimpleDateFormat formataData = new SimpleDateFormat("dd/MM/yyyy");
if(sent != null)
{
System.out.println("Sent: " + formataData.format(sent));
}
System.out.println();
System.out.println("Message : ");
Multipart multipart = (Multipart) msg[i].getContent();
for (int x = 0; x < multipart.getCount(); x++)
{
BodyPart bodyPart = multipart.getBodyPart(x);
String disposition = bodyPart.getDisposition();
if (disposition != null && (disposition.equals(BodyPart.ATTACHMENT)))
{
System.out.println("Mail have some attachment : ");
DataHandler handler = bodyPart.getDataHandler();
System.out.println("file name : " + handler.getName());
}
else
{
System.out.println("Conteúdo: " + bodyPart.getContent());
}
}
System.out.println();
}
folder.close(true);
store.close();
}
}
Executando a aplicação, tenho este resultado:
--------------------MESSAGE 1--------------------------
From: Tatiane Freitas - Dzyon SP [email removido]
Reply-to: Tatiane Freitas - Dzyon SP [email removido]
To: [email removido]
Subject: Planilha VT
Sent: 30/05/2012
Message :
Conteúdo: javax.mail.internet.MimeMultipart@ea443f
Mail have some attachment :
file name : =?iso-8859-1?Q?Relat=F3rio_de_gastos=283=29.xls?=
--------------------MESSAGE 2--------------------------
From: Tatiane Freitas - Dzyon SP [email removido]
Reply-to: Tatiane Freitas - Dzyon SP [email removido]
To: [email removido]
Subject: Re: Relatório de Gastos Junho/12
Sent: 04/07/2012
Message :
Conteúdo: javax.mail.internet.MimeMultipart@b2fb1e
Conteúdo: com.sun.mail.util.BASE64DecoderStream@8497f6
Conteúdo: com.sun.mail.util.BASE64DecoderStream@114a306
Conteúdo: com.sun.mail.util.BASE64DecoderStream@1db0da1
--------------------MESSAGE 3--------------------------
From: Thiago de Paula Beserra [email removido]
Reply-to: Thiago de Paula Beserra [email removido]
To: [email removido]
Subject: Anexo arquivo xml
Sent: 23/11/2012
Message :
Conteúdo: javax.mail.internet.MimeMultipart@5bd978
Mail have some attachment :
file name : envio.xml
--------------------MESSAGE 4--------------------------
From: Thiago de Paula Beserra [email removido]
Reply-to: Thiago de Paula Beserra [email removido]
To: [email removido]
Subject: anexo 2 arquivo xml
Sent: 23/11/2012
Message :
Conteúdo: javax.mail.internet.MimeMultipart@b34b1
Mail have some attachment :
file name : param.xml
Olhando o resultado, consigo ver o nome do arquivo que tenho em anexo no email. Mas como baixar este arquivo? Outra dúvida que tenho é sobre o conteudo do texto.
Este aparece com um conteúdo estranho pra mim.
Exemplo: Conteúdo: javax.mail.internet.MimeMultipart@5bd978
Tenho que converter alguma coisa para visualizar o conteudo??? Lembrando que estou pegando emails em um servidor POP3.
Desculpa pela ignorancia pessoal, mas a unica coisa que eu tinha mesmo que fazer de imediato é conseguir baixar o arquivo que vem em anexo no email.
Agradeço qualquer dica ou ajuda desde já! 