Get Outlook contacts into C# form-based application

前端 未结 4 704
温柔的废话
温柔的废话 2020-12-06 19:29

I have tried to get the contacts of Outlook contacts into C#, but it is not working. I have used the Microsoft Outlook 12.0 Object Library. I want to show the data in richte

相关标签:
4条回答
  • 2020-12-06 20:06

    I have tried the below-mentioned code to fetch the data from Outlook to C# desktop application in gridview. I have the above-mentioned API for that and got the email address of Outlook that is configured on your system! The code is pasted below.

    The used API works fine with outlook 2007 and 2003, but for outlook 2010, it's suggested to use the other API.

    public partial class Form1: Form
    {
        public Form1()
        {
            InitializeComponent();
        }
    
        private void button1_Click(object sender, EventArgs e)
        {
    
            fetchOutlookContacts();
        }
    
        public void fetchOutlookContacts()
        {
            Microsoft.Office.Interop.Outlook.Items OutlookItems;
            Microsoft.Office.Interop.Outlook.Application outlookObj;
            MAPIFolder Folder_Contacts;
    
            outlookObj = new Microsoft.Office.Interop.Outlook.Application();
            Folder_Contacts = (MAPIFolder)outlookObj.Session.GetDefaultFolder(OlDefaultFolders.olFolderContacts);
            OutlookItems = Folder_Contacts.Items;
    
            DataTable dt = new DataTable();
            dt.Columns.Add("Email Address");
    
            for (int i = 0; i < OutlookItems.Count; i++)
            {
                Microsoft.Office.Interop.Outlook.ContactItem contact = (Microsoft.Office.Interop.Outlook.ContactItem)OutlookItems[i + 1];
                dt.Rows.Add(new object[] { contact.Email1Address });
    
            }
            dataGridView1.DataSource = dt;
            dataGridView1.Show();
    
        }
    }
    
    0 讨论(0)
  • 2020-12-06 20:16

    This code is working fine in my C#-Solution.

    using Outlook =Microsoft.Office.Interop.Outlook;
    
    private void kontaktImport_Click(object sender, RoutedEventArgs e)
            {
                Outlook.Application app = new Outlook.Application();
                Outlook.NameSpace NameSpace = app.GetNamespace("MAPI");
                Outlook.MAPIFolder ContactsFolder = NameSpace.GetDefaultFolder(Outlook.OlDefaultFolders.olFolderContacts);
                Outlook.Items ContactItems = ContactsFolder.Items;
                try
                {
                    foreach (Outlook.ContactItem item in ContactItems)
                    {
                        String output = "";
                        output = item.FirstName + "\n";
                        output += item.LastName;
                        TestTextBox.Text = output;
                    }
                }
                catch (System.Runtime.InteropServices.COMException ex)
                {
                    TestTextBox.Text = ex.ToString();
                }
            }         
    
    0 讨论(0)
  • 2020-12-06 20:27

    This works for me. It gets all the contacts from outlook and shows it in datagridview.

      Microsoft.Office.Interop.Outlook.Items OutlookItems;
      Microsoft.Office.Interop.Outlook.Application outlookObj = new Microsoft.Office.Interop.Outlook.Application();
      MAPIFolder Folder_Contacts;
      Folder_Contacts = (MAPIFolder)outlookObj.Session.GetDefaultFolder(OlDefaultFolders.olFolderContacts);
      OutlookItems = Folder_Contacts.Items;
      MessageBox.Show("Wykryto kontaktów: " + OutlookItems.Count.ToString());
    
      for (int i = 0; i < OutlookItems.Count; i++)
      {
        Microsoft.Office.Interop.Outlook.ContactItem contact = (Microsoft.Office.Interop.Outlook.ContactItem)OutlookItems[i+1];
        sNazwa = contact.FullName;
        sFirma = contact.CompanyName;
        sAdress = contact.BusinessAddressStreet;
        sMiejscowosc = contact.BusinessAddressPostalCode + " " + contact.BusinessAddressCity;
        sEmail = contact.Email1Address;
        dataGridView1.Rows.Add(sNazwa, sFirma, sAdress, sMiejscowosc, sEmail);
    
      }
    
    0 讨论(0)
  • 2020-12-06 20:31

    Well there is a solution with Microsoft Interop but that creates issue with systems where Microsoft office is not installed. So i solved it with Microsoft exchange service. For now i have tried it in Asp.Net mvc and it works fine. So this is how you can get contacts in Asp.Net

    public void GetContact()
        {
            
            string ewsUrl = "https://outlook.office365.com/EWS/Exchange.asmx";
            string userName = "outlookusername";
            string password = "outlookpassword";
    
            ExchangeService servicex = new ExchangeService();
            servicex.Url = new Uri(ewsUrl);
            servicex.UseDefaultCredentials = true;
            servicex.Credentials = new WebCredentials(userName, password);
            ContactsFolder contactsfolder = ContactsFolder.Bind(servicex, WellKnownFolderName.Contacts);
            int numItems = contactsfolder.TotalCount < 50 ? contactsfolder.TotalCount : 50;
            if (numItems == 0)
                AddContact();
            numItems = contactsfolder.TotalCount < 50 ? contactsfolder.TotalCount : 50;
            // Instantiate the item view with the number of items to retrieve from the Contacts folder.
            ItemView view = new ItemView(numItems);
    
            // To keep the request smaller, request only the display name property.
            view.PropertySet = new PropertySet(BasePropertySet.IdOnly, ContactSchema.DisplayName);
    
            // Retrieve the items in the Contacts folder that have the properties that you selected.
            FindItemsResults<Item> contactItems = servicex.FindItems(WellKnownFolderName.Contacts, view);
    
            // Display the list of contacts. 
            foreach (Item item in contactItems)
            {
                if (item is Contact)
                {
                    Contact contact = item as Contact;
                    Console.WriteLine(contact.DisplayName);
                }
            }
        }`
    

    you just have to replace outlook username password there and this will give you contacts. In case there are no contacts i have called Add Contact method for adding one.For more reference you can have a look at this article i found Microsoft Outlook Add contact and get contact Asp.Net MVC using Microsoft Exchange Service

    0 讨论(0)
提交回复
热议问题