Outlook に保存されているオートコンプリート メール アドレスを一般的な使用のために抽出するにはどうすればよいですか?

Outlook に保存されているオートコンプリート メール アドレスを一般的な使用のために抽出するにはどうすればよいですか?

私の組織では、Outlookの連絡先機能を使用していない人が多く、エクスポートする機能がありません。代わりに、オートコンプリートリストに頼っています。ない方法について尋ねるこのリストをそのまま転送するたとえば、新しいワークステーションを取得するときなどです。これらのリストをテキスト形式で必要とする場合があります。アカウントは IMAP を使用するためファイルはなく.nk2、Outlook はデータを内部に保存します (リンクされたヘルプで説明されているように)。それらを取得する簡単な方法はありますか?

答え1

最も効率的な解決策だとは思いませんが、うまくいきました。私はLinuxワークステーションを持っているので、すでに知っているツールを使って、必死にテキストを削除しました。Windowsバージョンや、Windowsに付属のBASHシェルでも同じことができるかもしれません。Windows 用 Gitファイルを処理するための他の適切なプログラムがない場合は、

  1. ソース マシンで MFCMAPI を使用して、IPM.Configuration.Autocompleteファイルを TXT ファイルとして抽出します。範囲外ですが、質問にリンクされている転送手順の最初の部分に従うことができます。

  2. ファイルをテキスト エディターで開きます。これは XML です。 を<property>含むに移動しPR_ROAMING_BINARYSTREAM0DF0...内の長い 16 進文字列 ( )のみを<Value>別のプレーン テキスト ファイル (例) として保存しますautomplete-dump-hex.txt。バイト オーダー マークなしで、ASCII/UTF-8 で保存します。

  3. 16 進ストリームを含むこのファイルをバイナリに変換します。次のようなコマンドを使用しました。

    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>正規表現の置換を使用して2 つの別々のフィールドに変換しました。
    4. いくつかの名前を囲む一重引用符を削除しました。
    5. 再度重複を排除し、住所のみの行よりも名前 + 住所の行を優先します。

これにより、数百の一意のアドレスを含むリストが正常に作成され、満足のいく結果が得られました。この手順の説明は、実際の手順よりも長いと思います。

関連情報