Pergunta

Vou criar um arquivo EML com um anexo usando o Javamail.

Criei um arquivo EML simples com sucesso, mas a adição de um anexo não funciona corretamente. Vou adicionar um arquivo PDF. Meu arquivo EML será criado com sucesso. Se eu abrir o arquivo EML gerado com o Outlook, não encontrarei meu arquivo PDF como anexo, mas encontrarei o próprio arquivo EML como anexo. Alguém tem uma ideia?

Eu tentei duas variantes (com o mesmo resultado), usei o FileDataSource classe e o caminho simples com MimeBodyPart#attachFile(File).

Vou postar um exemplo:

File pdfFile = new File("somePdfFile");

Properties p = System.getProperties();
Session session = Session.getInstance(p);
MimeMessage message = new MimeMessage(session);
// MimeBodyPart txt = new MimeBodyPart();
// txt.setText("");
MimeBodyPart mbp = new MimeBodyPart();
mbp.attachFile(attachment);
// FileDataSource fds = new FileDataSource(attachment);
// fds.setFileTypeMap(new FileTypeMap() {
//    
//   @Override
//   public String getContentType(String arg0) {
//     return "application/pdf";
//   }
//    
//    @Override
//    public String getContentType(File file) {
//      return "application/pdf";
//    }
//      
//  });
//  mbp.setDataHandler(new DataHandler(fds));
//  mbp.setFileName("\"" + attachment.getName() + "\"");
//  mbp.setDisposition(MimePart.ATTACHMENT);
//  mbp.setHeader("Content-ID", "Attachment");
Multipart mp = new MimeMultipart();
//  mp.addBodyPart(txt);
mp.addBodyPart(mbp);
message.setContent(mp);
File emlFile = new File("message.eml");
emlFile.createNewFile();
message.writeTo(new FileOutputStream(emlFile));

// do something with the EML file
// Desktop.getDesktop().open(emlFile);

Crie um arquivo .eml (email) em java


Obrigado pela sua resposta. Eu carreguei um arquivo PDF (que eu uso para testes, é um helloworld simples gerado com relatórios de cristal) e o arquivo EML gerado que deve incluir o arquivo PDF.

Acabei de notar que, se abrir o arquivo EML vinculado com o Apple Mail ou com o Outlook Express, ele funciona (mas sem a possibilidade de edição). Talvez seja uma questão do Microsoft Outlook?

Os links são removidos

Foi útil?

Solução

Você deve tentar adicionar as linhas de cabeçalho que mencionei ao topo da mensagem e ver como o Outlook lida com ela. Adicione a To:, From:, Subject: E talvez até um Date: Com dados reais neles, e o Outlook tem mais probabilidade de tratá -los como uma mensagem, mas apenas um arquivo.

Outras dicas

Zubi, parece que o problema é o tipo de conteúdo no anexo definido como "Aplicativo/stream de octeto". Portanto, parece que o leitor de correio está tomando o arquivo PDF como uma tela alternativa para o corpo "Texto" da mensagem que não existe (está apenas em branco).

Você terá que me perdoar, já faz mais de um ano desde que lidei com MIME, mas acho que você vai querer a) colocar algum texto corporal na mensagem, b) Certifique -se de que o tipo no anexo está definido como aplicativo/pdf. Felizmente, isso impedirá que a leitura de correio tente exibir o PDF como o corpo principal da mensagem.

Fora isso, parece normal ... agora, as perspectivas podem reclamar porque não há cabeçalhos RFC 822 no corpo principal. Você pode querer adicionar pelo menos um From:, To:, e a Subject:.

A mensagem passou meu código de análise MIME ...

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top