2017-07-11 48 views
0

電子メール内のTO、CCまたはBCCのいずれかの行に入力するときに表示される自動補完アドレスリストにアクセスしたいと考えています。このデータは、Outlook内の他のアドレス一覧へのアクセス方法と同様に抽出することができます。Outlook - 自動補完アドレスリストにアクセスする方法

誰でもこれが可能かどうかを確認することができますかもしそうなら、どうすればそれをやり遂げることができますか?

これは現在、私はさまざまな他のアドレスリストの電子メールアドレスを抽出しています。

foreach (Outlook.AddressEntry item in addressList.AddressEntries) 
    { 
     using (item.ComDisposable()) 
      { 
       switch (item.AddressEntryUserType) 
        { 
         case Outlook.OlAddressEntryUserType.olExchangeUserAddressEntry: 
         case Outlook.OlAddressEntryUserType.olExchangeRemoteUserAddressEntry: 
          var exUser = item.GetExchangeUser(); 
          Debug.WriteLine(exUser.PrimarySmtpAddress, "_GetOutlookContacts"); 
          yield return new EGContact(exUser.Name, exUser.PrimarySmtpAddress, item.ID); 
          break; 

         case Outlook.OlAddressEntryUserType.olOutlookContactAddressEntry: 
          var contact = item.GetContact(); 
          yield return new EGContact(contact.FullName, contact.Email1Address, item.ID); 
          break; 

         case Outlook.OlAddressEntryUserType.olExchangeDistributionListAddressEntry: 
         break; 

         default: 
         break; 

        } 
      } 
    } 
+1

: - [見通しオートコンプリートリストに関する情報】(https://support.microsoft 1

オプションをRedemption使用している場合は、それがRDONicknamesコレクションとしてオートコンプリートを公開します。 com/ja-jp/help/2199226); 2 - [Outlook電子メールを実装すると、Windowsフォームでオートコンプリートに送信](https://stackoverflow.com/questions/11522296/implementing-outlook-email-send-to-autocomplete-in-a-windows-form)および3 - [Outlookのアドレス帳からの自動完成ソース](https://stackoverflow.com/questions/9198818/autocomplete-source-from-outlook-address-book) –

+0

@MaciejLosご意見ありがとうございました。私はOutlooksの自動補完リストから連絡先を抽出したいのに対し、自動補完ソースを作成することについてより多くのオリエンテーション。 – benbants

答えて

1

オートコンプリートストリームは、受信ボックスフォルダにメッセージクラス「IPM.Configuration.Autocomplete」の隠し(関連付けられた)メッセージとして格納されます。 OutlookSpyのデータを見ることができます:Inboxフォルダに移動し、OutlookSpyリボンのIMAPIFolderボタンをクリックして、 "Associated Contents"タブに移動し、PR_MESSAGE_CLASS == "IPM.Configuration.Autocomplete"のメッセージを探し、PR_ROAMING_BINARYSTREAMプロパティを選択しますその内容を見る。

Outlookオブジェクトモデル(MAPIFolder.GetStorage("IPM.Configuration.Autocomplete", OlStorageIdentifierType.olIdentifyByMessageClass)を使用してそのメッセージを開き、PropertyAccessor.GetPropertyを使用してプロパティを読み取り、解析できます。 PropertyAccessorを使用して大きなオートコンプリートストリームを開くことはできません。私はこれが役に立つかもしれませんthik

set Session = CreateObject("Redemption.RDOSession") 
Session.MAPIOBJECT = Application.Session.MAPIOBJECT 
set Nicknames = Session.GetNicknames 
for each NickName in NickNames 
    Debug.Print NickName.Name & " - " & NickName.SmtpAddress 
next 
0

以前のバージョンのOutlookでは、この情報はローカルの.NK2ファイルに保存されていました。 Outlook 2010以降では、この情報はメールボックス(オートコンプリートストリーム)に保存されます。詳細は、Clearing AutoComplete and other Recipient Cachesを参照してください。

To、CcまたはBccフィールドに入力されたデータにアクセスするには、Recipientsコレクション(MailItemクラスの対応するプロパティを参照)を使用できます。

関連する問題