2013-03-13 2 views
0

Я разрабатываю приложение WPF-C# и получаю контактные элементы MS Outlook 2010 с использованием Redemption. Он работает нормально, если в моем Outlook есть только одна учетная запись SMTP. Но если я настрою другую учетную запись, которая является учетной записью сервера Exchange, я не получаю ни одного элемента контакта из того же кода. Ниже мой код:Не получать контактные данные из Outlook 2010

 Interop.Redemption.RDOItems folderItems = null; 
     Interop.Redemption.RDOFolder folderContacts = null; 
     Interop.Redemption.RDOFolder folderSuggestedContacts = null; 
     List<GMContactItem> allOutlookContacts = null; 
     object itemObj = null; 
     List<Interop.Redemption.RDOContactItem> contactItemsList = null; 

     try 
     { 

      folderContacts = (RDOFolder)RDOSessionItem.GetDefaultFolder(Interop.Redemption.rdoDefaultFolders.olFolderContacts); 
      contactItemsList = new List<RDOContactItem>(); 
      folderItems = folderContacts.Items; 
      for (int i = 1; folderItems.Count >= i; i++) 
      { 
       itemObj = folderItems[i]; 
       if (itemObj is Interop.Redemption.RDOContactItem) 
        contactItemsList.Add(itemObj as RDOContactItem); 
       else 
        Marshal.ReleaseComObject(itemObj); 
      } 

      Marshal.ReleaseComObject(folderItems); 
      folderItems = null; 


      // getting items from the Suggested Contacts folder in Outlook 
      folderSuggestedContacts = RDOSessionItem.GetDefaultFolder(
             rdoDefaultFolders.olFolderSuggestedContacts); 
      if (folderSuggestedContacts != null) 
      { 
       folderItems = folderSuggestedContacts.Items; 
       for (int i = 1; folderItems.Count >= i; i++) 
       { 
        itemObj = folderItems[i]; 
        if (itemObj is Interop.Redemption.RDOContactItem) 
         contactItemsList.Add(itemObj as Interop.Redemption.RDOContactItem); 
        else 
         Marshal.ReleaseComObject(itemObj); 
       } 
      } 
     } 
     catch (System.Exception ex) 
     { 
      System.Windows.Forms.MessageBox.Show(ex.ToString()); 
     } 

Когда я удалить свой аккаунт с сервером Exchange Server, то он работает нормально, а если добавить учетную запись обмена сервера в Outlook, то этот код не исключение, но не дают никакого контакта элемента. Может ли кто-нибудь сказать мне, что здесь может быть проблемой. Заранее спасибо.

-Surya

+1

В папке «Контакты» в почтовом ящике Exchange есть какие-либо элементы? –

+0

Привет, Дмитрий, в основном я работаю с двумя учетными записями, это SMPT, а другой - сервером обмена. Да, есть контакты в моем почтовом ящике обмена, потому что когда я открываю диалог выбора имени, он содержит много контактов. Помимо этого, вторая учетная запись, которая является учетной записью SMTP, имеет много контактов в адресной книге. Кроме того, если я запускаю одно и то же приложение с Outlook 2007, он работает хорошо. –

ответ

0

Вы смотрите на записи GAL? Эти записи адресов существуют в GAL (на основе AD), а не в папке «Контакты» почтового ящика Exchange.

Если вам нужно открыть папку «Контакты» в хранилище PST (не по умолчанию), вызовите RDOStore.GetDefaultFolder (olFolderContacts) вместо RDOSession.GetDefaultFolder (который возвращает папку из хранилища по умолчанию).

Вторичный магазин PST можно открыть, используя коллекцию RDOSession.Stores.

Смежные вопросы