Apache POI HSMF
通过开源 Java API 处理 MSG 文件
阅读 Microsoft Outlook MSG 文件以访问呈现信息、主题和正文内容或使用 Apache POI 提取附件。
Apache POI HSMF 入门
首先,您需要在系统上安装 Java 开发工具包 (JDK)。如果您已经拥有它,请继续访问 Apache POI 的 下载 页面以获取存档中的最新稳定版本。将 ZIP 文件的内容提取到可以将所需库链接到 Java 程序的任何目录中。就这些!
在基于 Maven 的 Java 项目中引用 Apache POI 更加简单。您只需在 pom.xml 中添加以下依赖项,并让您的 IDE 获取和引用 Apache POI Jar 文件。
Apache POI Maven 依赖
<!-- https://mvnrepository.com/artifact/org.apache.poi/poi -->
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
<version>4.1.0</version>
</dependency>
API to Access Outlook MSG Files
访问 Outlook MSG 文件的 API
Apache POI-HSMF 允许 Java 开发人员和程序员访问 Outlook MSG 文件的内容。 Apache POI-HSMF 是 Microsoft Outlook 消息文件格式到纯 Java 的一个端口。到目前为止,该 API 处于非常基本的级别,因此可用于处理电子邮件的功能有限。开发者可以获得
从味精中提取数据 - Java
// Open MSG file
MAPIMessage msg = new MAPIMessage("sample.msg");
// Read Content
System.out.println("From: " + msg.getDisplayFrom());
System.out.println("To: " + msg.getDisplayTo());
System.out.println("CC: " + msg.getDisplayCC());
System.out.println("BCC: " + msg.getDisplayBCC());
System.out.println("Subject: " + msg.getSubject());
Read & Extracts Attachments from Outlook MSG File
从 Outlook MSG 文件中读取和提取附件
Apache POI-HSMF API 使 Java 开发人员能够解析 Outlook MSG 文件;提取并读取嵌入文档的内容。开发人员可以访问 MAPI 消息的附件。它支持读取一个或多个 Outlook MSG 文件,并为每个文件从可用块和包含附件的目录中创建一个文本文件。它从 Outlook MSG 文件中读取附件并将其作为单个文件写入磁盘。
提取 MSG 的附件 - Java
// Open MSG file
MAPIMessage msg = new MAPIMessage("sample.msg");
// Extract Attachment
AttachmentChunks[] attachments = msg.getAttachmentFiles();
if(attachments.length > 0) {
File d = new File("D:\\Attachments");
if(d.mkdir()) {
for(AttachmentChunks attachment : attachments) {
processAttachment(attachment, d);
}
}
}
Save Email Message Contents inside Java Apps
在 Java 应用程序中保存电子邮件内容
Java 程序员可以使用 Apache POI-HSMF API 来提取和保存电子邮件内容。可以提取电子邮件正文以创建一个新文件,然后您可以在 FileWrite 的帮助下将其写入光盘。
提取电子邮件正文以通过 Java 创建新文件
String filename = "message.msg";
MAPIMessage msg = new MAPIMessage(filename);
PrintWriter txtOut = new PrintWriter("ApacheMessage.txt");
txtOut.println("Email Body: " + msg.getTextBody());
txtOut.close();