كيفية الحصول على قائمة جهات الاتصال من Exchange Server؟

StackOverflow https://stackoverflow.com/questions/2071668

سؤال

هل يمكن لأي شخص أن يخبرني أبسط طريقة للحصول على قائمة جهات اتصال من Exchange Server؟ أنا أستخدم C#

من ما اكتشفته ، تبادل خدمات الويب موجود فقط لـ Exchange Server 2007 وما بعده. سيكون هذا هو خياري الأول ، لكنني أود أيضًا أن أرغب في بديل للإصدارات السابقة من Exchange (WebDav أو شيء ما). خدمات الدليل ليست خيارًا.

هل كانت مفيدة؟

المحلول

هذه هي كيفية الحصول على قائمة جهات الاتصال من قائمة جهات الاتصال الخاصة بك في التبادل باستخدام EWS. لست متأكدًا من كيفية الحصول على جهات اتصال من القائمة العالمية حتى الآن ، نظرت فقط إلى واجهة برمجة التطبيقات قبل ساعة.

private static void ListContacts(ExchangeService svc) {
    foreach (var v in svc.FindItems(WellKnownFolderName.Contacts,
                                    new ItemView(20))) {
        Contact contact = v as Contact;
        ContactGroup contactGroup = v as ContactGroup;

        //v.Load(); // Turns out you don't need to load for basic props.
        if (contact != null) {
            Console.WriteLine("Contact: {0} <{1}>",
                contact.DisplayName,
                contact.EmailAddresses[EmailAddressKey.EmailAddress1]);
        } else if (contactGroup != null) {
            Console.WriteLine("Contact Group: {0}", contactGroup.DisplayName);
            switch (svc.RequestedServerVersion) {
                case ExchangeVersion.Exchange2007_SP1:
                    ExpandGroupResults groupResults
                        = svc.ExpandGroup((contactGroup.Id));
                    foreach (var member in groupResults) {
                        Console.WriteLine("+ {0} <{1}>",
                            member.Name, member.Address);
                    }
                    break;
                case ExchangeVersion.Exchange2010:
                    foreach (GroupMember member in contactGroup.Members) {
                        Console.WriteLine("+ {0} <{1}>",
                        member.AddressInformation.Name,
                        member.AddressInformation.Address);
                    }
                    break;
                default:
                    Console.WriteLine(
                        "** Unknown Server Version: {0}",
                        svc.RequestedServerVersion);
                    break;
            }
        } else {
            Console.WriteLine("Unknown contact type: {0} - {1}",
                contact.GetType(), v.Subject);
        }
    }
}

لقد قمت بإنشاء خدمة في مجال VERBOCITY ، وإلقاء نظرة على تبادل خدمات الويب API للمزيد من المعلومات.

نصائح أخرى

بادئ ذي بدء ، لا تنس إضافة إشارة إلى مكتبة Microsoft Exchange WebServices.

private static void ConnectToExchangeService()
{
    service = new ExchangeService(); 
    service.Credentials = new WebCredentials(USERNAME, PASSWORD, DOMAIN_NAME);
    service.AutodiscoverUrl(USER_ADDRESS);
}

private static void ListGlobalContacts(ExchangeService service)
{
    /* passing true as the third parameter to "ResolveName" is important to
       make sure you get the contact details as well as the mailbox details */
    NameResolutionCollection searchResult = service.ResolveName(NAME_YOURE_LOOKING_FOR, ResolveNameSearchLocation.DirectoryOnly, true);
    foreach (NameResolution resolution in searchResult )
    {
        Console.WriteLine("name is " + resolution.Contact.DisplayName);
        Console.WriteLine("address is " + resolution.Mailbox.Address);
        Console.WriteLine("business phone is " + resolution.Contact.PhoneNumbers[PhoneNumberKey.BusinessPhone]);
        Console.WriteLine("mobile phone is " + resolution.Contact.PhoneNumbers[PhoneNumberKey.MobilePhone]);
    }
}

... وقدم بريت ريان بالفعل رمز الحصول على قائمة جهات الاتصال المحلية.

تكمن المشكلة في هذه الطريقة لاسترداد قائمة جهات الاتصال العالمية (حسنًا ، إحداها على الأقل) هي أن وظيفة "حلول" تصل إلى 100 جهة اتصال بحيث إذا كانت مؤسستك لديها سجلات أكثر من ذلك ، فأنت في مشكلة. يتمثل أحد الحلول المحتملة (والآخر الذي قمت بتطبيقه) في إجراء بحث منفصل عن كل حرف (على افتراض أنه يمكنك التحقق من أن مثل هذا البحث سيعود دائمًا إلى أقل من 100 نتيجة) وتوصيل جميع الإدخالات الفريدة معًا في قائمة واحدة.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top