java eml 附件,使用JavaMail创建带附件的EML文件

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

解决方案

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.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 记事本是一款基础文本编辑软件,无法直接提取eml文件附件。要提取eml文件附件,我们可以使用以下方法: 1. 使用专业的电子邮件客户端软件:如Outlook、Thunderbird等,打开eml文件,并通过软件自附件提取功能将附件保存到指定位置。 2. 使用第三方的eml文件阅读器和提取工具:市面上存在许多eml文件阅读器,它们通常都具备提取附件的功能。下载并安装合适的工具,打开eml文件,并通过工具提供的选项将附件保存到所需位置。 3. 手动提取:eml文件是一种邮件标准格式,它实际上是一封邮件的源代码。通过用记事本打开eml文件,可以看到邮件内容和附件的原始数据。在源代码中查找正确的附件字节流数据,并将其粘贴到新建的文件中(注意保存文件时,需将后缀名更改为对应附件类型的扩展名)。这种方法相对复杂,需要一定的技术基础和耐心。 总的来说,使用记事本直接提取eml文件附件是不可行的,建议使用专业的邮件客户端软件或第三方工具来提取附件,以确保效率和附件的完整性。 ### 回答2: 要使用记事本提取.eml文件附件,你需要按照以下步骤进行操作。 首先,将.eml文件保存到你的计算机上。在保存时,确保.eml文件的保存位置易于访问,并且你知道文件的确切路径。 然后,右键单击.eml文件并选择“打开方式”。在打开方式下拉菜单中,选择“记事本”。这将使用记事本打开.eml文件。 在记事本窗口中,.eml文件的内容将以文本形式显示。你可以看到附件与邮件正文的文本内容一同显示。 要提取附件,首先找到附件的开始标记。通常,附件的开始标记以“Content-Disposition: attachment”开头,并且在该行中的文件名可以看到。 在找到附件的开始标记后,找到附件的结束标记。通常,附件的结束标记以“--”开头,并且在该行中会有一个随机生成的标识符。 从开始标记到结束标记之间的文本就是附件的内容,这些文本是以二进制格式编码的。你需要将这些二进制文本提取出来并将其保存为附件。 为了提取附件,可以使用记事本中的复制和粘贴功能。选择附件内容并复制,然后在一个新的记事本文档中粘贴。 将粘贴的内容保存为一个新的文件,并将其扩展名更改为匹配附件文件类型。例如,如果附件是图片文件,你可以将其扩展名更改为.png、.jpg等。 完成上述步骤后,你已成功提取了.eml文件中的附件。你可以通过双击提取出的附件来打开和查看其内容。 ### 回答3: 使用记事本提取.eml文件附件的方法如下: 1. 首先,将.eml文件保存到计算机上的任意位置,确保你可以轻松找到这个文件。 2. 打开记事本工具,你可以通过在开始菜单中搜索"记事本"来找到它。 3. 在记事本中,点击"文件"选项,并选择"打开"。在文件对话框中,选择你保存的.eml文件,然后点击"打开"按钮。 4. .eml文件将在记事本中被打开,并以文本格式显示。 5. 请注意,.eml文件是一种邮件文件,可能包含邮件主题、发件人、收件人、正文和附件等信息。你需要在文件中找到附件的位置。 6. 通常情况下,附件会以一组编码字符表示,类似于"Content-Type: application/octet-stream; name="example.jpg""的格式,这表示一个名为"example.jpg"的附件。 7. 在找到附件的位置后,你可以将这些编码字符复制到一个新的文本文件中,并将文件保存为相应的格式。例如,如果附件是一个.jpg图片,可以将该文本文件保存为"example.txt"。 8. 最后,将保存的文本文件后缀名从.txt更改为相应格式的后缀名,例如.jpg,以恢复附件的原始格式。 需要注意的是,记事本只能提取和查看.eml文件中的文本内容,对于其他类型的附件(如图片、文档、压缩包等)可能无法直接查看。对于这些类型的附件,你可以使用相应的应用程序或提取工具进行查看和提取。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值