当通过赎回中getMessageFromid()时,我会得到mapi_e_unknown_entryid



我使用救赎(http://dimastr.com/redemption/home.htm)来开发我的Outlook Addin。当我尝试第一次在sta-thread(!)中getMessageFromid时,这一切都很好,但是下次我会得到mapi_e_e_unknown_entryid。

    RDOSession rdoSession = null;.
    rdoSession = new RDOSession();
    if (rdoSession != null)
    {
         if (!rdoSession.LoggedOn) 
            rdoSession.Logon(Consts.ProfileName);
         if (rdoSession.LoggedOn)
         {
           for (int c = 1; c <= rdoStoresCnt; c++)
           { 
            /* other code */
            RDOMail mail = null;
            try
            {
               mail = rdoSession.GetMessageFromID(entryID);
               /*  other code  */
            }
            catch (Exception ex) 
            {
             if (mail != null) Marshal.ReleaseComObject(mail); mail = null;
            }
            finally
            {
             if (mail != null) Marshal.ReleaseComObject(mail); mail = null;
            }
           }
        } 
    }

我在做什么错?

MAPI_E_UNKNOWN_ENTRYID表示当前的MAPI会话(通过调用RDOSession.Logon创建)不知道应该处理哪个MAPI提供商处理指定的入口ID,因为(最有可能)尚未加载提供商该会话并有机会在会话中使用MAPI系统注册其一组入口ID。

拨打GetMessageFromId时,您可以尝试指定商店条目ID(赎回将首先打开指定的商店并调用IMsStore::OpenEntry而不是IMAPISession::OpenEntry),但是真正的解决方案是避免创建一个全新的Mapi会话 - 因为您的代码是您的代码是Inside Outlook,Outlook使用了MAPI会话:只需将RDOSession.MAPIOBJECT属性设置为从Outlook设置为Namespace.MAPIOBJECT即可。do 不是在这种情况下调用RDOSession.Logoff

相关内容

  • 没有找到相关文章

最新更新