일반적인 용도로 Outlook에 저장된 자동 완성 이메일 주소를 추출하려면 어떻게 해야 합니까?

일반적인 용도로 Outlook에 저장된 자동 완성 이메일 주소를 추출하려면 어떻게 해야 합니까?

우리 조직의 많은 사람들은 Outlook의 연락처 기능을 사용하지 않으므로 내보낼 항목이 없습니다. 대신 자동 완성 목록에 의존합니다. 나는~ 아니다방법을 묻는다이 목록을 있는 그대로 전송, 예를 들어 새 워크스테이션을 구입할 때. 때로는 텍스트 형식의 목록이 필요할 때도 있습니다. 계정이 IMAP을 사용하기 때문에 파일이 없으므로 .nk2Outlook은 링크된 도움말에 설명된 대로 데이터를 내부적으로 저장합니다. 쉽게 구할 수 있는 방법이 있나요?

답변1

나는 가장 효율적인 솔루션을 가지고 있다고 생각하지 않지만 효과가 있었습니다. 나는 Linux 워크스테이션을 가지고 있기 때문에 내가 이미 알고 있는 도구를 사용하여 발로 차고 비명을 지르며 텍스트를 찢어냈습니다. Windows 버전 및/또는 함께 제공되는 BASH 셸에서도 동일한 작업을 수행할 수 있습니다.윈도우용 힘내, 파일을 처리하는 데 적합한 다른 프로그램이 없는 경우.

  1. 원본 컴퓨터에서 MFCMAPI를 사용하여 IPM.Configuration.Autocomplete파일을 TXT 파일로 추출합니다. 범위를 벗어나지만 질문에 링크된 이전 지침의 첫 번째 부분을 따를 수 있습니다.

  2. 텍스트 편집기에서 파일을 열면 XML입니다. <property>가 포함된 으로 이동하여 PR_ROAMING_BINARYSTREAM긴 16진수 문자열( 0DF0...) 만 <Value>별도의 일반 텍스트 파일(예: ) 에 저장합니다 automplete-dump-hex.txt. 바이트 순서 표시 없이 ASCII/UTF-8로 저장합니다.

  3. 16진수 스트림이 포함된 이 파일을 바이너리로 변환합니다. 나는 다음과 같은 명령을 사용했습니다.

    xxd -r -p < automplete-dump-hex.txt > automplete-dump-raw.txt
    
  4. 이 원시 텍스트에는 UTF-16 리틀 엔디안의 일반 텍스트 부분이 포함되어 있지만 이진 데이터도 포함되어 있으며 문자열은 null 바이트로 구분됩니다. 적절한 편집기에서 이것을 열고 여기에서 원하는 대로 이동할 수 있습니다. Vim에서 열어 인코딩을 강제한 :e ++enc=utf-16le automplete-dump-raw.txt다음 UTF-8( )로 덮어썼습니다 :set fileencoding=utf-8.

  5. null을 줄 구분 기호로 처리하고 가 포함된 항목을 검색한 @다음 null을 개행 문자로 변환했습니다.

    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. 다시 중복을 제거하여 주소만 있는 것보다 이름 + 주소가 있는 행을 선호합니다.

이를 통해 수백 개의 고유 주소가 포함된 목록이 성공적으로 생성되었으며 매우 만족했습니다. 이번 단계 설명은 실제 단계보다 더 긴 것 같아요.

관련 정보