2015-05-01 2 views
0

Я пытаюсь разрешить неоднозначные контакты в Outlook 2010. Мой внешний вид настроен с двумя разными почтовыми ящиками: [email protected] и [email protected] Если конкретный пользователь (например, XXX) существует в обоих доменах, Outlook решает имя из адресной книги по умолчанию. Как переключиться на другую адресную книгу (i, .e domain2) и решить? Однако, если контакт не существует в domain1 (i, e по умолчанию), моя программа может извлечь его из домена2. Пожалуйста, предложите мне способ разрешить получателю только из одного домена.Устранение конфликта контактов в нескольких почтовых ящиках в Microsoft Outlook

Моего приложения в C# и я использую Microsoft библиотека Перспективы 14,0

ответ

0

объектная модель Перспектива не предоставляет свойство или метод для разрешения получателя в отношении конкретной адресной книги. Единственный возможный метод - Resolve или ResolveAll для класса Получатели.

1

Если вы используете Redemption, то вы можете использовать метод RDOAddressList .ResolveName для разрешения имени, который поддерживает конкретный контейнер GAL. Объект RDOAddressList можно получить либо из RDOSession.AddressBook, либо из RDOExchangeAccount. Свойство GAL. RDOExchangeAccount можно получить из коллекции RDOSession.Accounts.

VB:

set Session = CreateObject("Redemption.RDOSession") 
    Session.MAPIOBJECT = Application.Session.MAPIOBJECT 
    set AddressEntry = Session.AddressBook.GAL.ResolveName("dmitry streblechenko") 
    MsgBox AddressEntry.SMTPAddress 

C#:

Redemption.RDOSession session = new Redemption.RDOSession(); 
    session.MAPIOBJECT = Application.Session.MAPIOBJECT; //if you already have a pointer to the Outlook.Application object, Or call Logon 
    Redemption.RDOAddressEntry addressEntry = session.AddressBook.GAL.ResolveName("dmitry streblechenko"); 
    MessageBox.Show(addressEntry.SMTPAddress); 
+0

Могу ли я получить C# код для RDOAddressList.ResolveName() против конкретного контейнера GAL? –

+0

См. Обновленный ответ выше. –

+0

Я использую accounts.DisplayAccountList(), чтобы разрешить пользователю изменять учетную запись по умолчанию. Я использую session.AddressBook.ResolveName (name, true), чтобы разрешить имя против определенного AddressList (i, e Default in outlook). Если пользователь делает домен2 в качестве учетной записи по умолчанию, будет ли session.AddressBook.ResolveName (имя, истина) разрешаться из домена2? –

0

частный Redemption.RDOAddressEntry ResolveRecipientsRDO (имя строки) {

 Redemption.RDOAddressEntry raddressEntry = null; 
     try 
     { 
      string displayName = (string)accountDisplayNames[domainSelect.Text]; 
      Microsoft.Office.Interop.Outlook.Application app = new Outlook.Application(); 
      Redemption.RDOSession session = new Redemption.RDOSession(); 
      session.MAPIOBJECT = app.Session.MAPIOBJECT; 
      //if you already have a pointer to the Outlook.Application object, Or call Logon 
      RDOStores stores = session.Stores; 

      RDOAccounts accounts = session.Accounts; 



      if (stores.DefaultStore.Name.ToLower().Equals(displayName.ToLower())) 
      { 
       WriteLog("Default account:" + stores.DefaultStore.Name.ToLower()); 
       // MessageBox.Show("Outlook's Default account name: " + stores.DefaultStore.Name.ToLower() + " matches with selected domain " + displayName); 
       raddressEntry = session.AddressBook.ResolveName(name, true); 

      } 
      else 
      { 
       MessageBox.Show("The selected domain " + displayName + " is not Outlook's Default domain. Set this as default domain to resolve", "Default Mailbox Setting"); 
       accounts.DisplayAccountList(); 
       WriteLog("Default account:" + stores.DefaultStore.Name.ToLower()); 
       raddressEntry = session.AddressBook.ResolveName(name, true); 

      } 
     } 
     catch(System.Exception e) 
     { 
      MessageBox.Show("Resolving error:" + e.GetBaseException()); 
      WriteLog("*******inside findAndWriteDirectReporteesintoPDF******"); 
     } 


     return raddressEntry; 
    } 
+0

Вышеприведенный код не показывает мне диалоговое окно checknames домена domain2 для разрешения имени даже после установки domain2 в качестве моей учетной записи по умолчанию из окна accounts.DisplayAccountList() .. где я ошибся .. Он по-прежнему показывает checknames из домена1 для разрешения имени –

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