Creation of a EML file with an attachment using JavaMail

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); --- 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*
Can you post the email file that got generated? Being that it's probably TNEF encoded, it will be a binary file, but I'm courious what output your code generated. When you call mbp.attachFile(), make sure that the function is setting the mime type correctly, etc. If not, you will have to set it for that mime part, and you probably want it to be "attachment", (which may not be implied, even though you called attachFile(), as that function can also be used to attach HTML inline, etc). (I think it's the content-disposition that you want to set to "attachment", and the content-type to be the files

以上就是Creation of a EML file with an attachment using JavaMail的详细内容,更多请关注web前端其它相关文章!

赞(0) 打赏
未经允许不得转载:web前端首页 » JavaScript 答疑

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

前端开发相关广告投放 更专业 更精准