これを行う方法を調査し、API ドキュメントを調べましたが、うまくいきませんでした。特定のユーザーの連絡先を取得するために必要なコードを知っている人はいますか?
どんな助けでも大歓迎です
これを行う方法を調査し、API ドキュメントを調べましたが、うまくいきませんでした。特定のユーザーの連絡先を取得するために必要なコードを知っている人はいますか?
どんな助けでも大歓迎です
オンラインで見つけた他のすべての回答は非常に複雑です。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;
}
}
}
基本的には、次の 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 呼び出しに追加できます。