Anexo enviado pelo JavaMail chega como .dat

Eu tenho uma planilha do Excel que eu preencho utilizando a biblioteca do Apache POI.

Preciso enviar esse arquivo preenchido por email.O objeto HSSFWorkbook tem um método getBytes(), mas quando pego esse array de bytes para enviar por email, ao abrir o anexo ele está todo “desconfigurado”.

Como alternativa, eu utilizo o método write para gravar esse arquivo no servidor em uma pasta temporária e depois utilizo a biblioteca commons-io para ler esse arquivo temporário e retornar os bytes.

Ao abrir o email no Mozilla Thunderbird o anexo está correto e consigo abrir pelo Excel. Porém, ao abrir o email pelo Outlook o anexo está lá no formato .dat. Se eu clicar em Abrir com… e escolher o Microsoft Excel ele abrirá o arquivo corretamente.

Alguma idéia para resolver o problema?

P.S: O estranho é que no Mozilla chega corretamente.

Posta ai como vc ta anexando os bytes.

Eu anexo assim e não tenho problema:

MimeBodyPart part = new MimeBodyPart(); part.setContent(new String(bytes), "application/vnd.ms-excel"); // bytes eh seu documento part.setFileName("nome-do-arquivo.xls"); part.setDisposition(Part.ATTACHMENT); multipart.addBodyPart(part);

Problema Resolvido (após alguns minutos olhando o header do email)

Fica ai a solução para quem passar a mesma dificuldade:

Problema 1: O content type estava como: application/msexcel. Correto é: application/vnd.ms-excel

Ao mudar o Content Type o Outlook 6 recebeu com sucesso, mas o Windows Live Mail 2011 ainda recebia como .dat

Problema 2: O nome do arquivo de anexo estava indo sem a extensão. Ex: arquivo em vez arquivo.xls
(Só o Windows Live Mail não aceitava o nome sem a extensão)