Sejamos práticos:
Coloque a função no código:
private MimeMessage readSigned(Message msgOriginal) throws MessagingException, IOException {
MimeMessage msg = (MimeMessage) msgOriginal;
ByteArrayOutputStream bos = new ByteArrayOutputStream();
msg.writeTo(bos);
bos.close();
SharedByteArrayInputStream bis = new SharedByteArrayInputStream(bos.toByteArray());
MimeMessage cmsg = new MimeMessage(session, bis);
return cmsg;
}
Ao obter a mensagem, substitua pelo trecho de código:
try {
message.isMimeType("text/*");
} catch (MessagingException e) {
message = readSigned(message);
}
Observação: para remover, mover ou qualquer outro tipo de alteração no servidor, deve-se utilizar a instância original da mensagem e NÃO a mensagem retornada pelo readSigned, caso contrário o comando não irá funcionar.
Um comentário:
Eu estou com este problema em um aplicação java pra ler emails. Mas não consegui entender onde aplicar essa solução que vc postou. A minha aplicação lê os emails da caixa de entrada, mas qdo chega em um determinado ponto da mensagem:
Unable to load BODYSTRUCTURE
acontece qdo eu tento pegar o conteúdo :
message = messages[messageNumber];
msgObj = message.getContent();
Postar um comentário