如何提取 Outlook 中儲存的自動完成電子郵件地址以供一般使用?

如何提取 Outlook 中儲存的自動完成電子郵件地址以供一般使用?

我的組織中的許多人不使用 Outlook 的聯絡人功能,因此他們無法匯出任何內容。相反,他們依賴自動完成清單。我是不是詢問如何按原樣傳輸此列表,例如,當獲得新工作站時。有時我們需要這些文字格式的清單。.nk2由於帳戶使用 IMAP,因此沒有文件,因此 Outlook 在內部儲存資料(如連結說明中所述)。有沒有簡單的方法來獲得它們?

答案1

我認為我沒有最有效的解決方案,但它確實有效。我有一個 Linux 工作站,所以我用我已經知道的工具把文字撕下來,然後又踢又尖叫。您也許可以對 Windows 版本和/或附帶的 BASH shell 執行相同的操作適用於 Windows 的 Git,如果您沒有其他合適的程序來處理這些文件。

  1. 在來源電腦上使用 MFCMAPI 將IPM.Configuration.Autocomplete檔案提取為 TXT 檔案。超出範圍,但您可以按照問題中連結的傳輸說明的第一部分進行操作。

  2. 在文字編輯器中開啟該文件,它是 XML。轉到<property>包含 的文件PR_ROAMING_BINARYSTREAM,僅將長十六進位字串 ( 0DF0...) 保存在<Value>單獨的純文字檔案中,例如automplete-dump-hex.txt.以 ASCII/UTF-8 格式儲存,不含位元組順序標記。

  3. 將包含十六進位流的檔案轉換為二進位。我使用了這樣的命令:

    xxd -r -p < automplete-dump-hex.txt > automplete-dump-raw.txt
    
  4. 該原始文字包含純文字部分(採用 UTF-16、小端字節序),但它也包含二進位數據,並且字串以空字節分隔。您可以在任何合適的編輯器中打開它,然後從這裡開始自己的方式。我在 Vim 中打開它,強制編碼:e ++enc=utf-16le automplete-dump-raw.txt,然後將其覆蓋為 UTF-8 ( :set fileencoding=utf-8)。

  5. 我將空值視為行分隔符號並蒐索任何包含 的內容@,然後將空值轉換為換行符:

    grep -zF @ automplete-dump-raw.txt | tr '\000' '\n' > automplete-dump-possibles.txt
    
  6. 然後我將最後一個輸出檔案整理為更友善的格式(TSV):

    1. 排序並刪除重複行(Vim :sort u);
    2. 刪除了幾行虛假資料;
    3. 使用正規表示式替換轉換name <email@address>為兩個單獨的欄位;
    4. 刪除了一些名稱周圍的單引號;和
    5. 再次進行重複資料刪除,優先選擇包含名稱+位址的行而不是僅包含位址的行。

這成功地產生了包含數百個唯一地址的列表,我對此感到滿意。我認為這些步驟的描述比實際步驟長。

相關內容