我將創建一個使用JavaMail附件的EML文件附件的EML文件。創建與使用JavaMail
我創建了一個簡單的EML文件成功,但增加一個附件不能正常工作。我要添加一個PDF文件。我的EML文件將被成功創建。如果我用Outlook打開生成的EML文件,我會發現不是我的PDF文件作爲附件,但是我會找到EML文件本身作爲附件。有沒有人有想法?
我試過兩個變體(結果相同),我用FileDataSource
類和簡單的方式用MimeBodyPart#attachFile(File)
。
我要發佈一個例子:
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
謝謝您的答覆。我上傳了一個PDF文件(用於測試,它是用Crystal Reports生成的簡單的HelloWorld)以及生成的應包含PDF文件的EML文件。
我只注意到,如果我打開鏈接EML文件與蘋果的郵件或使用Outlook Express它工作(但沒有修改的可能性)。也許這是Microsoft Outlook的問題?
的鏈接都被刪除
你可以發佈生成的電子郵件文件嗎?因爲它可能是TNEF編碼的,它將是一個二進制文件,但我很高興你的代碼生成的輸出。當你調用mbp.attachFile()時,確保該函數正確設置了MIME類型等。如果沒有,你將不得不爲MIME部分設置它,並且你可能希望它是「附件」,可能不會暗示,即使您調用attachFile(),因爲該函數也可以用於附加HTML內聯等)。 (我認爲這是你想要設置爲「附件」的內容處置,而內容類型是文件 – LarryF 2009-01-07 20:43:36