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 文件:
- 使用 MapiMessage.load() 方法加载一个 MSG 文件。
- 从加载的 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 从 MSG 文件中获取附件
我们还可以按照以下步骤保存 Outlook MSG 文件中的附件:
- 使用 MapiMessage.load() 方法加载一个 MSG 文件。
- 遍历与 MapiMessage 对象关联的 附件集合。
- 使用 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());
}
从附件中读取嵌入消息
我们也可以按照以下步骤阅读嵌入在 Outlook MSG 附件中的电子邮件:
- 使用 MapiMessage.load() 方法加载一个 MSG 文件。
- 获取作为 MapiMessage 对象的附加消息。
- 显示消息属性。
以下代码示例展示了如何使用 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 的更多信息。如有任何歧义,请随时在 论坛 上与我们联系。