使用 Java 读取 Outlook MSG 文件

MSG 是 MS Outlook 使用的电子邮件文件格式。它是一个 Outlook 项目,允许存储电子邮件、联系人、消息、任务、约会等。在某些情况下,我们可能需要在 Java 应用程序中读取 Outlook MSG 文件并提取主题、收件人、发件人、正文等属性。在本文中,我们将学习如何使用 Java 读取 Outlook MSG 文件。

本文将涵盖以下主题:

用于读取 Outlook MSG 文件的 Java API

为了读取 Outlook MSG 文件,我们将使用 Aspose.Email for Java API。它允许无缝地创建、发送、阅读和操作电子邮件。它还支持 Outlook MSG 文件的解析并以 Java 对象的形式提供它们的内容。请下载 API 的 JAR 或在基于 Maven 的 Java 应用程序中添加以下 pom.xml 配置。

<repository>
    <id>AsposeJavaAPI</id>
    <name>Aspose Java API</name>
    <url>http://repository.aspose.com/repo/</url>
</repository>
<dependency>
    <groupId>com.aspose</groupId>
    <artifactId>aspose-email</artifactId>
    <version>22.2</version>
    <classifier>jdk16</classifier>
</dependency>

使用 Java 解析和读取 Outlook MSG 文件

我们可以按照以下步骤解析和读取 Outlook MSG 文件:

  1. 使用 MapiMessage.load() 方法加载一个 MSG 文件。
  2. 从加载的 MSG 中读取 SenderName、Subject、Body、Recipients 等属性。

以下代码示例展示了如何使用 Java 读取 Outlook MSG 文件。

// 此代码示例演示如何读取 MSG 文件。
// 从磁盘加载 MSG 文件
MapiMessage outlookMessageFile = MapiMessage.load("D:\\Files\\Email\\message.msg");

// 显示发件人姓名
System.out.println("Sender Name : " + outlookMessageFile.getSenderName());

// 显示主题
System.out.println("Subject : " + outlookMessageFile.getSubject());

// 显示体
System.out.println("Body : " + outlookMessageFile.getBody());

// 显示收件人信息
System.out.println("Recipients : \n");

// 遍历与 MapiMessage 对象关联的收件人集合
for (int i = 0; i < outlookMessageFile.getRecipients().size(); i++) {
  
  // 设置对 MapiRecipient 对象的引用
  MapiRecipient rcp = (MapiRecipient) outlookMessageFile.getRecipients().get_Item(i);
  
  // 显示收件人电子邮件地址
  System.out.println("Email : " + rcp.getEmailAddress());
  
  // 显示收件人姓名
  System.out.println("Name : " + rcp.getDisplayName());
  
  // 显示收件人类型
  System.out.println("Recipient Type : " + rcp.getRecipientType());
}
使用 Java 解析和读取 Outlook MSG 文件。

使用 Java 解析和读取 Outlook MSG 文件。

使用 Java 从 MSG 文件中获取附件

我们还可以按照以下步骤保存 Outlook MSG 文件中的附件:

  1. 使用 MapiMessage.load() 方法加载一个 MSG 文件。
  2. 遍历与 MapiMessage 对象关联的 附件集合
  3. 使用 save() 方法将每个附件保存到磁盘。

以下代码示例显示了如何使用 Java 从 Outlook MSG 文件中保存附件。

// 此代码示例演示如何保存 MSG 文件中的附件。
// 从磁盘加载 MSG 文件
MapiMessage outlookMessageFile = MapiMessage.load("D:\\Files\\Email\\WithEmbeddedMsg.msg");

// 遍历与 MapiMessage 对象关联的附件集合
for (int i = 0; i < outlookMessageFile.getAttachments().size(); i++) {
  
  // 设置对 MapiAttachment 对象的引用
  MapiAttachment outlookMessageAttachment = (MapiAttachment) outlookMessageFile.getAttachments().get_Item(i);
  
  // 显示附件类型
  System.out.println("Att Type : " + outlookMessageAttachment.getMimeTag());
  
  // 显示附件名称
  System.out.println("File Name : " + outlookMessageAttachment.getLongFileName());
  
  // 将附件保存到磁盘
  outlookMessageAttachment.save("D:\\Files\\Email\\" + outlookMessageAttachment.getDisplayName());
}
使用 Java 从 MSG 文件中获取附件。

使用 Java 从 MSG 文件中获取附件。

从附件中读取嵌入消息

我们也可以按照以下步骤阅读嵌入在 Outlook MSG 附件中的电子邮件:

  1. 使用 MapiMessage.load() 方法加载一个 MSG 文件。
  2. 获取作为 MapiMessage 对象的附加消息。
  3. 显示消息属性。

以下代码示例展示了如何使用 Java 将嵌入消息作为附件读取。

// 此代码示例演示如何读取 MSG 中附加的嵌入消息。
// 加载一个味精文件
MapiMessage mapi = MapiMessage.load(dataDir + "EmbededMessageAsAttachment.msg");

// 显示总附件
System.out.println("Total attachments : " + mapi.getAttachments().size());

// 将附件读取为 MapiMessage
MapiMessage emb = mapi.getAttachments().get_Item(0).getObjectData().toMapiMessage();

// 显示发件人姓名
System.out.println("Sender Name : " + emb.getSenderName());

// 显示主题
System.out.println("Subject : " + emb.getSubject());

// 显示体
System.out.println("Body : " + emb.getBody());

// 显示收件人信息
System.out.println("Recipients :");

// 遍历与 MapiMessage 对象关联的收件人集合
for (int i = 0; i < emb.getRecipients().size(); i++) {
  
  // 设置对 MapiRecipient 对象的引用
  MapiRecipient rcp = (MapiRecipient) emb.getRecipients().get_Item(i);
  
  // 显示收件人电子邮件地址
  System.out.println("\t Email : " + rcp.getEmailAddress());
  
  // 显示收件人姓名
  System.out.println("\t Name : " + rcp.getDisplayName());
  
  // 显示收件人类型
  System.out.println("\t Recipient Type : " + rcp.getRecipientType());
}

获得免费许可证

请通过申请 免费的临时许可证 来尝试不受评估限制的 API。

结论

在本文中,我们学习了如何使用 Java 以编程方式读取 Outlook MSG 文件的内容。此外,我们还了解了如何从 MSG 文件中读取和提取附件。此外,您可以使用 documentation 了解有关 Aspose.Email for Java API 的更多信息。如有任何歧义,请随时在 论坛 上与我们联系。

也可以看看