Question

I'll create a EML file with an attachment using JavaMail.

I created a simple EML file successfully, but adding an attachment don't work properly. I'm going to add a PDF file. My EML file will be created successfully. If I open the generated EML file with Outlook I'll find not my PDF file as attachment but I'll find the EML file itself as attachment. Does anyone has an idea?

I tried two variants (with same result), I used the FileDataSource class and the simple way with MimeBodyPart#attachFile(File).

I'm going to post an example:

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

Create a .eml (email) file in Java


Thank you for your response. I uploaded a PDF file (that I use for testing, it's a simple HelloWorld generated with Crystal Reports) and the generated EML file which should include the PDF file.

I just noticed that if I open the linked EML file with Apple Mail or with Outlook Express it works (but without edit possibility). Maybe it's an issue of Microsoft Outlook?

The links are removed

Was it helpful?

Solution

You should try adding the header lines I mentioned to the very top of the message and see how Outlook deals with it then. Add a To:, From:, Subject: and maybe even a Date: with real data in them, and Outlook is more likely to treat it as a message, rather that just a file.

OTHER TIPS

Zubi, it looks like the issue is the content type on the attachment is set to "application/octet-stream". So, it looks like the mail reader is taking the PDF file as an alternate display for the "text" body of the message which does not exist, (it's just blank).

You'll have to forgive me, it's been more than a year since I've dealt with Mime, but I think you are going to want to A) Put some body text in the message, B) Make sure the type on the attachment is set to application/pdf. Hopefully, this will prevent the mail reading from trying to display the PDF as the primary body of the message.

Other than that, it looks normal... Now, Outlook MIGHT bitch because there are no RFC 822 headers in the main body. You may want to add at LEAST a From:, To:, and a Subject:.

The message passed MY MIME parsing code...

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top