1

これを行う方法を調査し、API ドキュメントを調べましたが、うまくいきませんでした。特定のユーザーの連絡先を取得するために必要なコードを知っている人はいますか?

どんな助けでも大歓迎です

4

2 に答える 2

3

オンラインで見つけた他のすべての回答は非常に複雑です。ResolveNameが機能するはずです。

次のコード例は私にとってはうまくいきました。残りは、さまざまな辞書を調べて、必要な情報を取得するだけです。

    public void findContact(string name)
    {
        NameResolutionCollection coll = service.ResolveName(name,
            ResolveNameSearchLocation.ContactsThenDirectory,
            true);
        foreach (NameResolution res in coll)
        {
            Contact contact = res.Contact;
            if (contact != null)
            {
                // retrieve contact info here
                if (contact.PhoneNumbers != null)
                {
                    Console.WriteLine("get different kinds of phone numbers from here");
                }

                if (contact.EmailAddresses != null)
                {
                    Console.WriteLine("get different kinds of email addresses from here");
                }

                return;
            }
        }
    }
于 2012-08-14T09:25:44.443 に答える
1

基本的には、次の 3 行に要約されます。

var service = new ExchangeService(ExchangeVersion.Exchange2007_SP1)
    {Credentials = new NetworkCredential("username", "password")};

service.AutodiscoverUrl("targetmailaddress", url => true);

var items = service.FindItems(new FolderId(WellKnownFolderName.Contacts, new Mailbox("targetmailaddress")), new ItemView(512));

targetmailaddress を探しているアドレスに置き換える必要があります。Exchange Server が 1 つしかない場合は、AutoDiscover 部分を省略して、最初のリストのサービス初期化にサービス URL を追加できます。

いつものように、アイテム フィルターを FindItems 呼び出しに追加できます。

于 2011-09-15T10:05:16.847 に答える