我将创建一个使用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