java - 使用 JavaMail 创建带有附件的 EML 文件

标签 java email outlook jakarta-mail eml

<分区>

我将使用 JavaMail 创建一个带有附件的 EML 文件。

我成功地创建了一个简单的 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)和生成的 EML 文件,其中应该包含 PDF 文件。

我刚刚注意到,如果我使用 Apple Mail 或 Outlook Express 打开链接的 EML 文件,它可以正常工作(但无法编辑)。可能是 Microsoft Outlook 的问题?

链接已删除

最佳答案

您应该尝试将我提到的标题行添加到邮件的最顶部,然后看看 Outlook 如何处理它。添加一个 To:From:Subject: 甚至可能是一个包含真实数据的 Date:, Outlook 更有可能将其视为消息,而不仅仅是文件。

关于java - 使用 JavaMail 创建带有附件的 EML 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/421944/

相关文章:

java - Hibernate @事务 session

Java 模式正则表达式不匹配

java - 在多对一关系中如何删除子对象

java添加函数,添加后全部成为最后一组数据

java - 使用 javamail api 发送的 html 电子邮件正文在 Outlook 中显示为乱码

email - 如何跳过具有任何类别标签的邮件,但处理没有标签的邮件?

java - 当我尝试从 Outlook Web 访问发送邮件时出现 java 运行时异常

c# - 如何处理 system.net.mail.smtpfailedrecipientsexception 失败的收件人

events - 在 Outlook 中捕获对 MailItem.SendUsingAccount 属性的更改

c# - 在 Wow6432Node 和普通配置单元中创建注册表