2011-08-12 2 views
0

응용 프로그램을 사용하여 C#을 사용하여 Micosoft Office Outlook에 저장된 연락처 세부 정보를 가져옵니다. 나는 Microsoft.Office.Interop 네임 스페이스를 통해 그것을 달성했다.C#을 사용하여 여러 메일 ID에서 Outlook 연락처 정보에 액세스해야합니다.

Outlook에서 개별 메일 ID의 연락처를 별도로 가져와야하는 같은 시스템에 여러 개의 메일 ID가 구성된 경우 문제가 발생합니다. 어떻게해야합니까?

/// <summary> 
/// Getting the contacts by passing the folder name. 
/// </summary> 
/// <param name="folderName"></param> 
/// <returns></returns> 
private List<MyContact> GetContactsFromFolder(string folderName) 
{ 
    List<MyContact> contacts = null; 
    object missing = System.Reflection.Missing.Value; 

    //Create instance of Outlook application and Outlook Contacts folder. 
    try 
    { 
     OutLook.MAPIFolder fldContacts = null; 
     contacts = new List<MyContact>(); 
     OutLook._Application outlookObj = new OutLook.Application(); 
     /* if (folderName == "Default") 
     { 
      fldContacts = (OutLook.MAPIFolder)outlookObj.Session.GetDefaultFolder(OlDefaultFolders.olFolderInbox); 
     } 
     else 
     { 
      OutLook.MAPIFolder contactsFolder = (OutLook.MAPIFolder) 
      outlookObj.Session.GetDefaultFolder(OlDefaultFolders.olFolderInbox); 
      //VERIFYING THE CUSTOM FOLDER IN OUT LOOK . 
      foreach (OutLook.MAPIFolder subFolder in contactsFolder.Folders) 
      { 
       if (subFolder.Name == folderName) 
       { 
        fldContacts = subFolder; 
        break; 
       } 
      } 
     } 
     * */ 

     fldContacts = (OutLook.MAPIFolder)outlookObj.Session.GetDefaultFolder(OlDefaultFolders.olFolderInbox); 

     //LOOPIN G THROUGH CONTACTS IN THAT FOLDER. 
     foreach (Microsoft.Office.Interop.Outlook._MailItem contactItem in fldContacts.Items) 
     { 
      MyContact contact = new MyContact(); 

      contact.FromAddress = contactItem.SenderEmailAddress; 
      contact.ToAddress = contactItem.To; 
      contact.Subject = contactItem.Subject; 
      contact.MailSize = contactItem.Size.ToString(); 
      contact.Received = contactItem.ReceivedTime.ToString(); 

      System.Data.SqlClient.SqlConnection con; 
      con = new System.Data.SqlClient.SqlConnection(); 
      con.ConnectionString = "Initial Catalog=sample;Integrated Security=True;Server=Test;Connect Timeout=900"; 
      try 
      { 
       con.Open(); 
       string to_address = ""; 
       string Cc = ""; 

       foreach (Microsoft.Office.Interop.Outlook.Recipient olRecipient in contactItem.Recipients) 
       { 
        if (contactItem.To.ToLower().Contains(olRecipient.Address.ToLower()) == true || 
         contactItem.To.ToLower().Contains(olRecipient.Name.ToLower()) == true) 
        { 
         if (to_address != "") 
         { 
          to_address = to_address + ";" + olRecipient.Name + " <" + olRecipient.Address + ">"; 
         } 
         else 
         { 
          to_address =olRecipient.Name+" <"+olRecipient.Address+">"; 
         } 
        } 
        else 
         if (contactItem.CC != null && contactItem.CC.ToString() != "") 
         { 
          if (contactItem.CC.ToLower().Contains(olRecipient.Address.ToLower()) == true || 
           contactItem.CC.ToLower().Contains(olRecipient.Name.ToLower()) == true) 
          { 
           if (Cc != "") 
           { 
            Cc = Cc + ";" + olRecipient.Name + " <" + olRecipient.Address + ">"; 
           } 
           else 
           { 
            Cc = olRecipient.Name + " <" + olRecipient.Address + ">"; 
           } 
          } 
         } 
       } 
       //contact. 
       contacts.Add(contact); 
      } 
     } 
+0

일부 코드를 알려주십시오. 현재 수행중인 방식에 따라 기본 또는 기본 사용자의 폴더를 항상 열어서는 안되기 때문에 일부 변경이 필요할 수 있습니다. –

답변

0

점은 코드의 호출에 있습니다 :

fldContacts = (OutLook.MAPIFolder)outlookObj.Session.GetDefaultFolder(OlDefaultFolders.olFolderInbox); 
다음

당신은 항상 기본 폴더를 여는 여기

는 샘플 코드입니다.

사용 가능한 폴더를 열거하고 Session 개체의 다른 메서드를 호출하여 사용해야 할 폴더를 열어야합니다.

나는 지금 당장 답을 알지 못하지만, 이것은 갈 방향입니다.

+0

나는 subFolder도 사용했다. 테스트를 위해 나는 코드 블록을 주석 처리했다. 문제는 여러 ID에 액세스하는 중입니다. –

관련 문제