大量的商業知識存在於電子郵件中,而您需要的部分通常在附件中:報價單、已簽署的修訂案、修訂後的時間表。GroupDocs.Search.Mcp 在 Docker 本地運行,打開電子郵件檔案和存檔(PST、OST、MSG、EML),並為每封訊息和每個附件建立索引,這樣 Claude Desktop、Cursor 或 Copilot 就能在原位搜尋存檔,並精確指出匹配來自哪個附件:

索引郵件資料夾。哪封訊息提到了價格上漲,具體說了什麼?

步驟說明與設定、故障排除請參考文件:如何在本地使用 AI 代理搜尋電子郵件存檔及附件.

為何電子郵件對代理而言很難?

因為存檔是一個容器的容器。PST 包含資料夾,資料夾包含訊息,訊息包含附件,而附件本身可能是 Word 檔、PDF 或試算表。具備檔案工具的代理只能看到一個大型二進位檔。先將存檔匯出為散列檔案雖可行,但速度慢,會將敏感資料複製到磁碟上,且當存檔變更時必須重新匯出。而模型根本無法讀取 PST。

搜尋引擎自行處理這層巢狀結構。每封訊息與每個附件都會成為可搜尋的項目,結果同時記錄容器的位置以及匹配在其內部的哪裡。

附件內的匹配結果會是什麼樣子?

以下是我們使用三封 EML 訊息測試時伺服器回傳的結果。短語「price increase」僅出現在其中一封訊息所附的 Word 報價單內;訊息正文僅寫著 「please find the updated quotation attached」。

-> add_to_index {"documentsPath":"mail","indexName":"mail"}
<- Indexed 'mail' into index 'mail': 3 document(s) added, 3 in the index.

-> search {"query":"\"price increase\"","indexName":"mail"}
<- { "documentsFound": 1, "documents": [
     { "filePath": "mail/2026-09-18-re-q3-pricing.eml",
       "innerPath": "quotation-Q-2026-118.docx",
       "occurrences": 1 } ] }

-> get_text_fragments {"query":"\"price increase\"","indexName":"mail"}
<- === mail/2026-09-18-re-q3-pricing.eml → quotation-Q-2026-118.docx
   (1 occurrence(s)) ===
     …Due to raw material costs we announce a price increase
   of 6 percent from 2026-11-01.…

filePath 為訊息;innerPath 為附件。代理可以回答「來自 Contoso 的 Re: Q3 pricing 訊息,附件中的報價單 Q-2026-118:自 11 月 1 日起上漲 6%」,且該句子的每個部分皆可追溯。

mail/2026-09-18-re-q3-pricing.eml          <- filePath
  |- body: "please find the updated quotation attached"
  '- attachment: quotation-Q-2026-118.docx  <- innerPath
        "...we announce a price increase of 6 percent..."

可在郵件上使用的問題

通常的查詢語言仍然適用,且有幾種模式特別適合用於往來信件。所有這些皆已在同一測試信箱上驗證:

  • 「哪封來自 Fabrikam 的訊息提到了交付延遲?」: fabrikam AND delay。寄件者地址與訊息一起被索引,因此 contoso 也會找到一封正文從未提及該公司的發票。
  • 「找出所有提到訂單 77812 的電子郵件」: 77812。整數會被視為文字。
  • 「哪些發票在十月到期?」: invoice AND content: daterange(2026-10-01 ~~ 2026-10-31)。這會匹配訊息文字中寫的日期,例如 「due on 2026-10-22」。content: 前綴很重要:若不加,日期範圍也會匹配引擎為每個檔案記錄的日期。

為何本地化對郵件比其他任何事物更重要

電子郵件是敏感資訊的聚集地:個人資料、談判、HR 討論串、法律建議。需要將信箱上傳或同步至服務的搜尋工具對許多團隊而言根本不可行。在此,存檔以唯讀方式掛載到機器上的容器中,於該處建立索引並進行搜尋。唯一離開的文字是代理在答案中引用的內容,而若使用本地部署的模型,甚至這部分也不會離開。

為了更緊密的設定,將存檔以唯讀方式掛載,並為索引提供獨立的卷:

docker run --rm -i \
  -v /srv/mail:/data:ro \
  -v /srv/mail-index:/index -e GROUPDOCS_MCP_INDEX_PATH=/index \
  ghcr.io/groupdocs-search/search-net-mcp:latest

大型存檔的範圍設定

擁有數萬封訊息的存檔在取得授權後仍能順利建立索引,但有計畫地進行會更有成效。可依資料夾或年份作為不同路徑進行索引(mail/2025、mail/2026),如此一年可以單獨移除或重新建立,因為引擎會移除整個已索引的路徑而非單一檔案。將郵件保留在獨立的索引中,與合約或報告分開,避免在查詢往來信件時必須遍歷其他所有內容。當存檔增長時,update_index 會抓取新訊息而不重新讀取舊訊息。

誠實的限制

  • 在評估模式下,索引最多容納 100 份文件,搜尋最多返回 10 筆,且 每封訊息與附件都計入,因此真實的存檔需要授權。請先呼叫 get_license_status。
  • 大型 PST 需要時間建立索引:每封訊息與附件都會被開啟。先完整索引一次,之後使用 update_index。
  • 未含文字層的掃描附件僅依檔案屬性建立索引;不支援 OCR。
  • 僅支援 Docker;在 Linux 上除非使用上述唯讀設定,否則需加入 --user "$(id -u):$(id -g)"。

常見問題

我可以在沒有 Outlook 的情況下使用 AI 搜尋 PST 檔案嗎?
可以。引擎直接讀取 PST、OST、MSG 與 EML;不涉及 Outlook,也不會匯出任何資料。

它會搜尋電子郵件附件內的內容嗎?
會。附件會被作為其訊息的項目建立索引,若在其中匹配,結果會以 innerPath 標示附件名稱。

我的信箱會被上傳到任何地方嗎?
不會。它在本地容器內被讀取;只有代理引用的段落會傳送至您的模型提供者。

深入了解