2013-06-02 1 views
2

Outlook 연락처의 연락처를 C#으로 가져 오려고했지만 작동하지 않습니다. 필자는 Microsoft Outlook 12.0 Object Library를 사용했습니다. richtextbox 또는 gridview에 데이터를 표시하려고합니다.Outlook 연락처를 C# 폼 기반 응용 프로그램으로 가져 오기

코드는 아래에 붙여 넣습니다. 제가 여기서해야 할 일을 알려주세요.

private void getContacts_Click(object sender, EventArgs e) 
    { 
     // Obtain an instance of the Outlook application 
     Outlook.Application app = new Outlook.ApplicationClass(); 

     // Access the MAPI namespace 
     Outlook.NameSpace ns = app.GetNamespace("MAPI"); 

     // Get the user's default contacts folder 
     Outlook.MAPIFolder contacts = 
     ns.GetDefaultFolder(Outlook.OlDefaultFolders.olFolderContacts); 

     // Iterate through each contact 
     for (int i = 1; i < contacts.Items.Count + 1; i++) 
     { 
      // Get a contact 
      Outlook.ContactItem contact = 
      (Outlook.ContactItem)contacts.Items[i]; 
      richTextBox1.Text += contact.FullName + " (" + 
      contact.BusinessTelephoneNumber + ")" + Environment.NewLine; 
      Application.DoEvents(); 
     } 
    } 
} 
+0

'작동하지 않는'부분에 대한 자세한 정보를 제공 할 수 있습니까? –

+0

버튼 이벤트가 발생합니다! 그것은 전혀 아무것도하지 않는다! 그것은 gridview에 Outlook의 연락처를 표시해야하지만! – user2420211

+0

AH! 아무 것도 일어나지 않으면 단추의 '클릭'이벤트를 처리기에 연결해야합니다. Xaml에서 그렇게 할 수 있습니다. –

답변

0

아래에서 언급 한 코드를 Outlook에서 gridview의 C# 데스크톱 응용 프로그램으로 가져 오려고했습니다. 위에서 언급 한 API를 가지고 있고 시스템에 구성된 Outlook의 이메일 주소를 받았습니다! 아래에 코드가 붙여 넣어집니다. 사용 된 API는 Outlook 2007 및 2003에서 제대로 작동하지만 Outlook 2010에서는 다른 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(); 

    } 
} 
5

이것은 저에게 유용합니다. 그것은 전망에서 모든 접촉을 얻고 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); 

    } 
1

이 코드는 내 C# -olution에서 제대로 작동합니다.

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(); 
      } 
     }   
관련 문제