我正在尝试使用MAPI打开用户的MessageStore。奇怪的是,当我运行此控制台应用程序时,当我用用户登录时,一切正常。

但是,当我将其作为Windows服务运行时,尝试打开MessageStore时得到MAPI_E_NOT_FOUND。

我已经将服务配置为以用户身份运行。

MapiLogonEx似乎工作正常,并且GetMsgStoreTables也给我正确的结果(我验证了MessageStore的EntryID是正确的)。

这是我的代码:

LPMAPITABLE     pStoresTbl = NULL;
m_lpMAPISession->GetMsgStoresTable(0, &pStoresTbl);

// Query Collumns
LPSPropTagArray pTags = NULL;
LPSRowSet pRows = NULL;
pStoresTbl->SeekRow(BOOKMARK_BEGINNING,0,NULL);
pStoresTbl->QueryRows(
                LONG_MAX,
                NULL,
                &pRows);


LPSBinary lpEntryID = NULL;
ULONG iprops;
for (iprops = 0; iprops < pRows->aRow[0].cValues; iprops++)
{
    SPropValue sProp = pRows->aRow[0].lpProps[iprops];
    if (PROP_ID(sProp.ulPropTag) == PROP_ID(PR_ENTRYID))
    {
        lpEntryID = &sProp.Value.bin;
        break;
    }
}


lpMDB = NULL;
HRESULT hres = m_lpMAPISession->OpenMsgStore(NULL,
    lpEntryID->cb,
    (LPENTRYID) lpEntryID->lpb,
    NULL,
        MDB_NO_DIALOG |
        MDB_NO_MAIL |       // spooler not notified of our presence
        MDB_TEMPORARY |  // message store not added to MAPI profile
        MAPI_BEST_ACCESS,
    &lpMDB);

最佳答案

那是Exchange个人资料吗?您确定要打开主邮箱而不是PF存储吗?

德米特里·斯特雷布琴科(MVP)
http://www.dimastr.com/
OutlookSpy-Outlook,CDO
和MAPI开发人员工具

10-07 13:37