Domanda

Creerò un file EML con un allegato usando JavaMail.

Ho creato con successo un semplice file EML, ma l'aggiunta di un allegato non funziona correttamente. Ho intenzione di aggiungere un file PDF. Il mio file EML verrà creato correttamente. Se apro il file EML generato con Outlook non troverò il mio file PDF come allegato ma troverò il file EML stesso come allegato. Qualcuno ha un'idea?

Ho provato due varianti (con lo stesso risultato), ho usato la classe FileDataSource e il modo semplice con MimeBodyPart # attachFile (File) .

Pubblicherò un esempio:

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);

Crea un file .eml (email) in Java


Grazie per la tua risposta. Ho caricato un file PDF (che utilizzo per i test, è un semplice HelloWorld generato con Crystal Reports) e il file EML generato che dovrebbe includere il file PDF.

Ho appena notato che se apro il file EML collegato con Apple Mail o Outlook Express funziona (ma senza possibilità di modifica). Forse è un problema di Microsoft Outlook?

I collegamenti vengono rimossi

È stato utile?

Soluzione

Dovresti provare ad aggiungere le righe di intestazione che ho citato all'inizio del messaggio e vedere come Outlook lo gestisce allora. Aggiungi un a: , da: , Subject: e forse anche un Date: con dati reali al loro interno, e Outlook è più probabile che lo tratti come un messaggio, piuttosto che solo un file.

Altri suggerimenti

Zubi, sembra che il problema sia che il tipo di contenuto dell'allegato è impostato su " application / octet-stream " ;. Quindi, sembra che il lettore di posta stia prendendo il file PDF come visualizzazione alternativa per il "testo" corpo del messaggio che non esiste, (è solo vuoto).

Dovrai perdonarmi, è passato più di un anno da quando mi occupo di Mime, ma penso che vorrai A) Metti un po 'di testo nel messaggio, B) Assicurati che il tipo sull'allegato è impostato su application / pdf. Speriamo che questo impedisca alla lettura della posta di provare a visualizzare il PDF come corpo principale del messaggio.

A parte questo, sembra normale ... Ora, Outlook potrebbe essere puttana perché non ci sono intestazioni RFC 822 nel corpo principale. Puoi aggiungere almeno un da: , a: e un Subject: .

Il messaggio ha passato il MIO codice di analisi MIME ...

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top