
PST(個人存儲表) 是一種眾所周知的文件格式,用於不同 Microsoft 程序(例如 MS Outlook、Exchange 和 Windows Messaging)的存儲目的。 PST 文件可以存儲消息、聯繫人以及有關其他項目(例如日曆、事件等)的信息。在某些情況下,您可能需要解析 PST 文件並以編程方式從中提取數據。為此,本文介紹瞭如何使用 Java 讀取 Outlook PST 文件。在代碼示例的幫助下,您將學習如何提取文件夾信息、閱讀電子郵件以及從 PST 文件中獲取聯繫人。
用於處理 Outlook PST 文件的 Java API - 免費下載
Aspose.Email for Java 是一種流行且功能豐富的電子郵件處理 API,用於創建和發送電子郵件。此外,它還允許您使用流行的電子郵件客戶端和存儲文件格式。在本文中,我們將使用 Aspose.Email for Java 從 PST 文件中讀取消息和其他信息。您可以 下載 API 或使用以下 Maven 配置安裝它。
存儲庫:
<repository>
<id>AsposeJavaAPI</id>
<name>Aspose Java API</name>
<url>http://repository.aspose.com/repo/</url>
</repository>
依賴:
<groupId>com.aspose</groupId>
<artifactId>aspose-email</artifactId>
<version>22.3</version>
<classifier>jdk16</classifier>
</dependency>
在 Java 中讀取 Outlook PST 文件
以下是用 Java 讀取 PST 文件並提取其信息的步驟。
- 使用 PersonalStorage.fromFile() 方法加載 PST 文件。
- 使用 PersonalStorage.getRootFolders().getSubFolders() 方法獲取 PST 中的文件夾集合。
- 檢索文件夾的信息,例如名稱、項目數等。
以下代碼示例顯示瞭如何在 Java 中讀取 PST 文件和獲取文件夾的信息。
// 加載 Outlook PST 文件
PersonalStorage pst = PersonalStorage.fromFile("PersonalStorage.pst");
// 獲取文件夾信息
FolderInfoCollection folderInfoCollection = pst.getRootFolder().getSubFolders();
// 瀏覽每個文件夾以顯示信息
for (int i = 0; i < folderInfoCollection.size(); i++) {
FolderInfo folderInfo = (FolderInfo) folderInfoCollection.get_Item(i);
System.out.println("FolderId: " + folderInfo.getEntryIdString());
System.out.println("Folder: " + folderInfo.getDisplayName());
System.out.println("Total items: " + folderInfo.getContentCount());
System.out.println("Total unread items: " + folderInfo.getContentUnreadCount());
System.out.println("-----------------------------------");
}
Java 從 PST 讀取電子郵件
以下是使用 Java 從 PST 文件讀取電子郵件的步驟。
- 使用 PersonalStorage.fromFile() 方法加載 PST 文件。
- 使用 PersonalStorage.getRootFolder() 方法訪問根文件夾。
- 使用 FolderInfo.getContents() 方法從每個子文件夾獲取消息集合。
- 遍歷集合中的消息並讀取每條消息的字段。
以下代碼示例顯示瞭如何使用 Java 從 PST 文件中提取消息。
// 加載 Outlook PST 文件
PersonalStorage pst = PersonalStorage.fromFile(path);
// 獲取 PST 文件的顯示格式
System.out.println("Display Format: " + pst.getFormat());
// 獲取文件夾和消息信息
FolderInfo folderInfo = pst.getRootFolder();
// 調用遞歸方法從每個文件夾中提取msg文件
extractMsgFiles(folderInfo, pst);
// 這是一種顯示文件夾內容的遞歸方法
private static void extractMsgFiles(FolderInfo folderInfo, PersonalStorage pst) {
// 顯示文件夾名稱
System.out.println("Folder: " + folderInfo.getDisplayName());
System.out.println("==================================");
// 遍歷此文件夾中的所有郵件
MessageInfoCollection messageInfoCollection = folderInfo.getContents();
for (MessageInfo messageInfo : messageInfoCollection) {
System.out.println("Saving message {0} ...." + messageInfo.getSubject());
// 在 MapiMessage 實例中獲取消息
MapiMessage message = pst.extractMessage(messageInfo);
// 將此消息以 msg 格式保存到磁盤
message.save(message.getSubject().replace(":", " ") + ".msg");
// 將此消息以 msg 格式保存到流中
ByteArrayOutputStream messageStream = new ByteArrayOutputStream();
message.save(messageStream);
}
// 為每個子文件夾遞歸調用此方法
if (folderInfo.hasSubFolders() == true) {
for (FolderInfo subfolderInfo : folderInfo.getSubFolders()) {
extractMsgFiles(subfolderInfo, pst);
}
}
}
用 Java 從 PST 中讀取聯繫人
在某些情況下,您可能需要提取存儲在 PST 文件中的聯繫人信息。以下步驟顯示如何使用 Java 訪問 PST 文件中的聯繫人。
- 使用 PersonalStorage.fromFile() 方法加載 PST 文件。
- 使用 PersonalStorage.getRootFolder().getSubFolder(“Contacts”) 方法獲取聯繫人文件夾的引用。
- 使用 FolderInfo.getContents() 方法獲取聯繫人集合。
- 遍歷聯繫人集合併讀取每個聯繫人或保存它。
以下代碼示例顯示瞭如何使用 Java 從 PST 文件中提取聯繫人。
// 加載 Outlook PST 文件
PersonalStorage pst = PersonalStorage.fromFile("SampleContacts.pst");
// 獲取聯繫人文件夾
FolderInfo folderInfo = pst.getRootFolder().getSubFolder("Contacts");
// 遍歷此文件夾中的所有聯繫人
MessageInfoCollection messageInfoCollection = folderInfo.getContents();
for (int i = 0; i < messageInfoCollection.size(); i++) {
MessageInfo messageInfo = (MessageInfo) messageInfoCollection.get_Item(i);
// 獲取聯繫信息
MapiContact contact = (MapiContact) pst.extractMessage(messageInfo).toMapiMessageItem();
// 在屏幕上顯示一些內容
System.out.println("Name: " + contact.getNameInfo().getDisplayName() + "\n");
// 以 MSG 格式保存到磁盤
if (contact.getNameInfo().getDisplayName() != null) {
MapiMessage message = pst.extractMessage(messageInfo); // Get rid of illegal characters that cannot be used as a file name
String messageName = message.getSubject().replace(":", " ").replace("\\", " ").replace("?", " ").replace("/", " ");
message.save(messageName + ".msg");
}
}
用於讀取 Outlook PST 文件的 Java API - 獲取免費許可證
您可以通過獲得臨時許可證免費試用 Aspose.Email for Java。
結論
在本文中,您了解瞭如何使用 Java 以編程方式讀取 PST 文件。此外,您還了解瞭如何使用 Java 從 PST 文件中提取文件夾信息、獲取電子郵件和檢索聯繫人。此外,您可以使用 文檔 探索更多關於 Aspose.Email for Java 的信息。此外,如果您有任何問題或疑問,請隨時通過我們的 論壇 告訴我們。