【问题标题】:Resolving contact conflict in more than one Mailbox in Microsoft Outlook解决 Microsoft Outlook 中多个邮箱中的联系人冲突
【发布时间】:2015-05-01 08:23:23
【问题描述】:

我正在尝试解决 Outlook 2010 中不明确的联系人。我的 Outlook 配置了两个不同的邮箱,例如 XXX@domain1.com 和 XXX@domain2.com。如果两个域中都存在特定用户(例如 XXX),则 Outlook 会从默认通讯簿中解析名称。如何切换到其他通讯录(即 domain2)并解析?但是,如果域 1 中不存在联系人(即默认值),我的程序可以从域 2 中获取它。请建议我一种仅从特定域解析收件人的方法。

我的应用程序是 C# 并且我使用 Microsoft Outlook Library 14.0

【问题讨论】:

    标签: c# outlook


    【解决方案1】:

    如果使用Redemption 是一个选项,您可以使用RDOAddressList.ResolveName 方法来解析特定GAL 容器的名称。 RDOAddressList 对象可以从RDOSession.AddressBookRDOExchangeAccount.GAL 属性中检索。可以从 RDOSession.Accounts 集合中检索 RDOExchangeAccount。

    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);
    

    【讨论】:

    • 我可以针对特定的 GAL 容器获取 RDOAddressList.ResolveName () 的 C# 代码吗?
    • 我正在使用 accounts.DisplayAccountList() 来允许用户更改默认帐户。我使用 session.AddressBook.ResolveName(name, true) 来针对特定的 AddressList 解析名称(即Outlook 中的默认值)。如果用户将 domain2 作为默认帐户,那么 session.AddressBook.ResolveName(name, true) 会从 domain2 解析吗?
    • 是的,默认地址列表会改变。
    • 我尝试了上面发布的代码,但即使将域 2 设置为默认帐户,检查名称对话框仍然显示来自域 1 的名称..请帮助
    • 您的地址簿名称解析选项有哪些(Ctrl + Shift B、工具 | 选项)?
    【解决方案2】:

    Outlook 对象模型不提供任何属性或方法来根据特定通讯簿解析收件人。对于 Recipients 类,唯一可能的方法是 ResolveResolveAll

    【讨论】:

      【解决方案3】:

      private Redemption.RDOAddressEntry ResolveRecipientsRDO(string name) {

              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;
          }
      

      【讨论】:

      • 即使在 accounts.DisplayAccountList() 对话框中将 domain2 设置为我的默认帐户后,上面的代码也没有显示 domain2 的检查名称对话框来解析名称。我在哪里出错了。它仍然显示来自 domain1 的检查名称以解析名称
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多