sexta-feira, 22 de julho de 2011

Solved: Unable to load BODYSTRUCTURE - Javamail e Microsoft Exchanged

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.