Outlook 显示联系人详细信息的MAPI

Outlook 显示联系人详细信息的MAPI,outlook,dialog,contacts,outlook-redemption,Outlook,Dialog,Contacts,Outlook Redemption,我们目前正在使用MAPI将联系人信息加载到表单中。 在MapiSession中,我们正在使用这段代码创建RDOAddressEntry“recepient” using (MapiSession session = new MapiSession()) { //open outlook contact dialog RDOAddressEntry recipient = session.GetAddressEntryFromID(contact.EntryId); if

我们目前正在使用MAPI将联系人信息加载到表单中。 在MapiSession中,我们正在使用这段代码创建RDOAddressEntry“recepient”

using (MapiSession session = new MapiSession()) 
{
    //open outlook contact dialog
    RDOAddressEntry recipient = session.GetAddressEntryFromID(contact.EntryId);
    if (recipient.Type == null)
    {
        throw new ArgumentException("type not defined");
    }

    recipient.Details(handle.ToInt32());
}
我们的问题似乎是,用最后一行代码打开的对话框创建了两个不同的对话框。一个用于exchange联系人,另一个用于SMTP联系人

在我们的应用程序的上一个版本中,它总是为两种RDOAddressEntry类型打开相同的对话框,并且我们没有更改代码中的任何内容


您能否帮助我解决此问题,以便SMTP和exchange都能再次使用相同的对话框?

我不确定您之前为什么会使用相同的对话框-该对话框实际上是由特定的通讯簿提供商提供的,因此,来自不同提供者的条目会有所不同。

应用程序的旧版本似乎加载了带有“Redemption.RDOAddressEntryClass”对象的对话框,而现在加载的是“System.\u COMObject”-对象…这不会有任何区别-这只是调试器表示该变量的方式。那么还有什么区别呢,相同的代码现在有不同的结果?…唯一的解释是,尽管您知道地址项来自Exchange,但它被视为一次性SMTP项。如果不访问代码运行的环境,很难具体说明。事实上,我们确实解决了这个问题!!我们现在正在使用Microsoft.Office.Interop,它可以按照我们的要求工作。所以看来赎回是有问题的。。。