Estou com um problema que não consegui encontrar a solução em lugar nenhum…
Desenvolvi uma aplicação para ler os xml das nf-e que chegam em um determinado e-mail e salvar em uma pasta. Quando executo a aplicação pelo eclipse ela funciona perfeitamente e baixa todos os e-mails, mas quando executo o código compilado ele baixa apenas as mensagens que são instancia da classe Multipart, não baixando as que são instancia da classe BASE64DecoderStream. No código abaixo a parte que verifica se a mensagem é instancia de BASE64DecoderStream dá sempre falso, quando rodo no eclipse da verdadeiro.
Alguém faz ideia do que pode estar acontecendo?
Segue o método que baixa os e-mails
public void lerMail() {
System.out.println("iniciou...");
try {
if (store == null)
connect();
inbox = store.getFolder("Inbox");
inbox.open(Folder.READ_WRITE);
messages = inbox.getMessages();
System.out.println("Mensagens: " + messages.length);
for (int msgIndex = 0; msgIndex < messages.length; msgIndex++) {
message = messages[msgIndex];
System.out.println((msgIndex + 1) + " - Titulo: " + message.getSubject());
System.out.print("Leu: ");
try {
messageObject = message.getContent();
if (messageObject instanceof Multipart) {
multipart = (Multipart) message.getContent();
for (int multipartIndex = 0; multipartIndex < multipart.getCount(); multipartIndex++) {
part = multipart.getBodyPart(multipartIndex);
if (part.getFileName() != null && part.getFileName().toLowerCase().contains(".xml")) {
salvarArquivo(part, trataString(part.getFileName()));
System.out.print("sim");
}
if (part.getFileName() != null && part.getFileName().toLowerCase().contains(".zip")) {
salvarArquivoZip(part, trataString(part.getFileName()));
System.out.print("sim");
}
}
} else if (messageObject instanceof BASE64DecoderStream) {
BASE64DecoderStream base = (BASE64DecoderStream) message.getContent();
salvarArquivo(base, trataString(message.getFileName()));
System.out.print("sim");
} else {
System.out.print(messageObject.getClass().getCanonicalName());
}
} catch (IOException e) {
System.out.print("erro");
}
System.out.println("");
}
inbox.close(true);
disconnect();
} catch (MessagingException e) {
store = null;
session = null;
}
System.out.println("terminou...");
}