如何使用 GroupDocs.Parser 在 Java 中解析 msg 檔案

msg 檔案中提取電子郵件的發件人、主旨與時間戳等元資料是許多 Java 應用程式的常見需求。在本指南中,您將學會如何使用 GroupDocs.Parser 快速且可靠地 解析 msg 檔案,內容涵蓋 Maven 設定、可投入生產的程式碼、效能技巧與常見陷阱。

快速答案

  • 哪個函式庫負責處理電子郵件元資料? GroupDocs.Parser for Java
  • 我可以解析 .msg 檔案嗎? 可以 – Parser 類別可讀取 .msg 與 .eml 格式
  • 最低 Java 版本? Java 8 或以上
  • 需要授權嗎? 試用版可用於測試;正式環境需購買正式授權
  • 典型的提取時間? 在一般伺服器上通常每檔案低於 200 ms

什麼是解析 msg?

解析 msg 檔案即是讀取 Microsoft Outlook 的二進位訊息格式,並將其標頭欄位(From、To、Subject、Date 等)以結構化資料呈現。GroupDocs.Parser 提供高階 API,抽象低階的二進位解析,讓您專注於業務邏輯。

為什麼使用 GroupDocs.Parser 進行電子郵件元資料提取?

GroupDocs.Parser 支援 30+ 種與電子郵件相關的格式,包括 .msg、.eml 與 .pst,且可在典型伺服器硬體上於 200 ms 內處理最高 500 MB 的檔案。此函式庫可在 Windows、Linux 與 macOS 上執行,且不需安裝本機 Outlook,提供跨平台的一致性。

前置條件

在開始之前,請確認以下項目:

  • 已在開發機器上安裝 Java 8+。
  • 已安裝 Maven(或其他建置工具)以管理相依性。
  • 已將 GroupDocs.Parser 授權檔(試用或正式)放置於 classpath,以供正式環境使用。

為 Java 設定 GroupDocs.Parser

將函式庫整合至 Maven 專案,只需加入官方倉庫與最新相依性(本文撰寫時為 v25.5)。

Maven 設定

將以下倉庫與相依性加入 pom.xml,完全照下列方式添加:

<repositories>
   <repository>
      <id>repository.groupdocs.com</id>
      <name>GroupDocs Repository</name>
      <url>https://releases.groupdocs.com/parser/java/</url>
   </repository>
</repositories>

<dependencies>
   <dependency>
      <groupId>com.groupdocs</groupId>
      <artifactId>groupdocs-parser</artifactId>
      <version>25.5</version>
   </dependency>
</dependencies>

直接下載

您也可以直接從 GroupDocs.Parser for Java releases 下載最新版本。

取得授權步驟

前往 GroupDocs 官方網站取得免費試用或臨時授權,以解鎖完整功能。

基本初始化與設定

Parser 類別提供載入與解析電子郵件文件的核心功能,並透過簡易 API 暴露元資料。於 Java 原始檔中匯入必要類別:

import com.groupdocs.parser.Parser;
import com.groupdocs.parser.data.MetadataItem;

如何在 Java 中解析 msg 檔案

要解析 .msg 檔案,只需以郵件檔案路徑建立 GroupDocs.Parser Parser 物件,然後呼叫其 parse() 方法。該方法會回傳 MetadataItem 物件的可遍歷集合,代表每個標頭欄位(如 From、To、Subject、Date 等)。此簡潔方式能有效處理 Outlook 二進位格式。

使用 new Parser(filePath) 載入目標 .msg 檔案,呼叫 parse() 取得 Iterable<MetadataItem>,再遍歷集合讀取每個名稱/值對。此方法在典型的 1 MB 檔案上 低於 200 ms 完成解析,且自動支援標頭中的 Unicode 字元。

String filePath = "YOUR_DOCUMENT_DIRECTORY/sample.msg";

從電子郵件檔案提取元資料

建立 Parser 物件,呼叫 parse(),並列印每筆元資料:

try (Parser parser = new Parser(filePath)) {
    Iterable<MetadataItem> metadata = parser.getMetadata();
    
    for (MetadataItem item : metadata) {
        System.out.println(String.format("%s: %s", item.getName(), item.getValue()));
    }
} catch (Exception e) {
    System.err.println("Error occurred while extracting metadata: " + e.getMessage());
}
  • 參數 – 檔案路徑傳入 Parser 建構子。
  • 回傳值 – 包含 FromSubjectDate 等名稱/值對的 Iterable<MetadataItem>
  • 目的 – 以簡潔且型別安全的方式讀取電子郵件標頭,免除低階 MIME 解析的麻煩。

常見問題與解決方案

問題解決方案
不支援的檔案格式在解析前將電子郵件轉換為 .msg.eml
記憶體不足錯誤將檔案分批處理或增加 JVM 堆積大小(-Xmx)。
授權未被識別確認授權檔已放在 classpath,且版本與函式庫相符。

實務應用

提取電子郵件元資料在多種情境下都非常有價值:

  1. 資料封存 – 依發件人或日期自動分類郵件,以便長期保存。
  2. 合規監控 – 掃描主旨與發件人資訊,執行公司政策的遵循檢查。
  3. 客服分析 – 抽取時間戳與主旨,用於評估回覆速度與議題趨勢。

效能考量

在處理數千封訊息時,請留意以下建議:

  • 批次處理 – 將檔案分成可管理的批次,以降低記憶體使用。
  • 非同步 I/O – 使用 Java NIO 或 CompletableFuture 進行非阻塞讀取。
  • 堆積管理 – 監控 JVM 堆積並調整 GC 設定,以因應大型工作負載。

常見問答

Q: 可以從 .eml 檔案提取元資料嗎?
A: 可以,GroupDocs.Parser 支援 .eml 檔案。只需將 Parser 建構子指向 .eml 檔案路徑即可。

Q: 如何有效處理大量電子郵件資料集?
A: 結合批次處理與非同步 I/O(例如 CompletableFuture),即可降低記憶體使用並提升吞吐量。

Q: 若在提取過程中發生例外該怎麼辦?
A: 請確認檔案格式受支援、相依性已正確加入,且 classpath 上有有效的授權檔。

Q: GroupDocs.Parser 可以免費使用嗎?
A: 提供試用版供評估使用。正式環境須購買或使用臨時授權。

Q: 哪裡可以找到更多程式碼範例?
A: 前往 GroupDocs documentation 並瀏覽 GitHub 倉庫取得更多範例。

其他常見問答

Q: 解析器會保留標頭中的 Unicode 字元嗎?
A: 會,GroupDocs.Parser 會正確解碼所有元資料欄位中的 Unicode 字元。

Q: 我能同時提取附件名稱嗎?
A: 附件可透過 Attachment API 取得;本節重點在於標頭資訊的元資料提取。

Q: 有方法限制回傳的元資料欄位嗎?
A: 可以在遍歷 Iterable<MetadataItem> 時,檢查 item.getName() 是否在自訂的白名單中,以過濾不需要的欄位。

資源


最後更新: 2026-08-15
測試環境: GroupDocs.Parser 25.5 for Java
作者: GroupDocs

相關教學