gpt4 book ai didi

c# - 通过赎回在线程中执行 GetMessageFromID() 时,我得到 MAPI_E_UNKNOWN_ENTRYID

转载 作者:太空宇宙 更新时间:2023-11-03 12:35:55 26 4
gpt4 key购买 nike

我使用 Redemption ( http://dimastr.com/redemption/home.htm ) 来开发我的 Outlook 插件。当我第一次在 STA-thread(!) 中尝试 GetMessageFromId 时一切正常,但在下一次我得到 MAPI_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 session (通过调用 RDOSession.Logon 创建)不知道哪个 MAPI 提供程序应该处理指定的条目 ID,因为(很可能)该提供程序尚未在该 session 中加载,并且没有机会在该 session 中向 MAPI 系统注册其条目 ID 集。

可以尝试在调用GetMessageFromId时指定store entry id(Redemption会先打开指定的store,调用IMsStore::OpenEntry而不是IMAPISession: :OpenEntry),但真正的解决方案是完全避免创建全新的 MAPI session - 因为您的代码在 Outlook 中,所以已经有 Outlook 使用的 MAPI session :只需设置 RDOSession.MAPIOBJECT 属性到 Namespace.MAPIOBJECT 从 Outlook。在这种情况下不要调用RDOSession.Logoff

关于c# - 通过赎回在线程中执行 GetMessageFromID() 时,我得到 MAPI_E_UNKNOWN_ENTRYID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41018260/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com