مشكلة في استيراد جهة اتصال من إصدار توقعات مختلفة من خلال كود صافي

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

  •  27-10-2019
  •  | 
  •  

سؤال

أنا خلقت رمز لاستيراد الاتصال من أوتلوك.إنشاء التطبيق في الإطار الصافي مع الإصدار 4.0 في ج#.

الكود كما يلي -

OutLook._Application outlookObj = new OutLook.Application();
outlookObj.ActiveExplorer();
OutLook.MAPIFolder contactsFolder = (OutLook.MAPIFolder)outlookObj.Session
    .GetDefaultFolder(OutLook.OlDefaultFolders.olFolderContacts);
comboDelimiter.Properties.Items.Clear();
if (!comboDelimiter.Properties.Items.Contains("Default"))
{
    comboDelimiter.SelectedText = "Default";
    comboDelimiter.Properties.Items.Add("Default");
}
//VERIFYING THE CUSTOM FOLDER IN OUT LOOK .
foreach (OutLook.MAPIFolder subFolder in contactsFolder.Folders)
{
    if (!comboDelimiter.Properties.Items.Contains(subFolder.Name))
    {
        comboDelimiter.Properties.Items.Add(subFolder.Name);
    }
}

يتم استخدام هذه الوظيفة لقراءة جهات الاتصال من مجلد معين من جهة اتصال أوتلوك -

private DataSet GetContactsFromFolder(string folderName)
{
    object missing = System.Reflection.Missing.Value;
    DataSet ds = new DataSet();
    //create instance of Outlook application and Outlook Contacts folder.
    try
    {
        OutLook.MAPIFolder fldContacts = null;
        OutLook._Application outlookObj = new OutLook.Application();
        if (folderName == "Default")
        {
            fldContacts = (OutLook.MAPIFolder)outlookObj.Session
                .GetDefaultFolder(OutLook.OlDefaultFolders.olFolderContacts);
        }
        else
        {

            OutLook.MAPIFolder contactsFolder = (OutLook.MAPIFolder)outlookObj.Session
                .GetDefaultFolder(OutLook.OlDefaultFolders.olFolderContacts);
            //VERIFYING THE CUSTOM FOLDER IN OUT LOOK .
            foreach (OutLook.MAPIFolder subFolder in contactsFolder.Folders)
            {
                if (subFolder.Name == folderName)
                {
                    fldContacts = subFolder;
                    break;
                }
            }
        }
        DataTable dt = new DataTable();
        for (int i = 0; i < 12; i++)
        {
            dt.Columns.Add("Col" + i,Type.GetType ("System.String"));
        }
        foreach (Microsoft.Office.Interop.Outlook._ContactItem contactItem in fldContacts.Items)
        {
            {
                DataRow dr = dt.NewRow();
                dr[0] = Convert.ToString(contactItem.FirstName);
                dr[1] = Convert.ToString(contactItem.LastName);
                dr[2] = Convert.ToString(contactItem.MobileTelephoneNumber);
                if (!string.IsNullOrEmpty(contactItem.Email1Address))
                    dr[3] = contactItem.Email1Address;
                else
                    dr[3] = contactItem.Email2Address;
                dr[4] = Convert.ToString(contactItem.HomeAddress);
                dr[5] = Convert.ToString(contactItem.BusinessTelephoneNumber);
                dr[6] = Convert.ToString(contactItem.HomeTelephoneNumber);
                dr[7] = Convert.ToString(contactItem.CompanyName);
                dr[8] = Convert.ToString(contactItem.Birthday);
                dr[9] = Convert.ToString(contactItem.Anniversary);
                dr[10] = Convert.ToString(contactItem.JobTitle);
                dr[11] = Convert.ToString(contactItem.HomeFaxNumber);
                dt.Rows.Add(dr);
            }
        }
        ds.Tables.Add(dt);
    }
    catch (System.Exception ex)
    {
        Console.WriteLine(ex);
    }
    return ds;
}

أضفت دلل لهذا ، هو من Microsoft.Office.Interop.Outlook with version 9.2 Description هو Microsoft.Office 11.0 Object Library

يستورد الاتصال من إصدار أوتلوك 2007 ولكن
عندما أقوم باستيراد جهة اتصال من أوتلوك 2010 ، فإنه لا يقوم باستيراد جهة اتصال.

كيفية حل هذه المشكلة?

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

المحلول

كنت تعمل مع نسخة محددة مكونات مايكروسوفت أوفيس إنتيروب.

ما تحتاج إلى استخدامه هو إطار عمل/مكتبة مايكروسوفت أوفيس محددة غير الإصدار مثل:

نيتوفيس - أسهل طريقة لاستخدام مكتب في صافي http://netoffice.codeplex.com/

صافي المجمع التجميعات للوصول إلى مايكروسوفت أوفيس ، إكسل ، وورد ، أوتلوك ، باور بوينت ، أسيس ، بروجيكت

مع ميزات مثل:

  • مكتب التكامل دون قيود الإصدار
  • جميع الكائنات والأساليب, خصائص وأحداث إصدارات المكتب 2000 ، 2002 ، 2003, 2007, 2010 يتم تضمين
  • نحويا و دلاليا متطابقة إلى ميكروسوفت إنتيروب الجمعيات لا عقبات النشر ، لا تسجيل إشكالية ، لا تبعيات ، لا التجميعات إنتيروب ، لا حاجة ل فستو

هناك مثال على كيفية الحصول على قائمة جهات اتصال أوتلوك في ج # هنا:http://netoffice.codeplex.com/wikipage?title=Outlook_Example05

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