Как открыть папку "Finder" почтового ящика делегата с помощью Outlook MAPI
Я ищу способ открыть папку "Finder" почтового ящика делегата с помощью Outlook MAPI.
Я создал EntryID почтового ящика делегата, вызвав CreateStoreEntryID. Используя этот EntryID, я вызываю OpenMsgStore, который преуспел. Теперь я пытаюсь открыть папку "Finder", которая завершается с ошибкой MAPI_E_INVALID_PARAMETER. Я могу получить другие папки, такие как Входящие, Отправленные и т. Д.
enum {
ePR_VALID_FOLDER_MASK,
ePR_IPM_FOLDER_ENTRYID,
FOLDER_NUMCOLS
};
SizedSPropTagArray(FOLDER_NUMCOLS, cols) = {
FOLDER_NUMCOLS,
{
PR_VALID_FOLDER_MASK,
PR_FINDER_ENTRYID,
}
};
ULONG pcount;
SPropValue *props;
hRes = pMapi_msgstore->GetProps((SPropTagArray *)&cols, 0, &pcount, &props);
if (hRes == S_OK || hRes == MAPI_W_ERRORS_RETURNED) {
LONG mask;
if (props[ePR_VALID_FOLDER_MASK].ulPropTag != PT_ERROR)
mask = props[ePR_VALID_FOLDER_MASK].Value.ul;
else
mask = 0;
if ((mask & FOLDER_FINDER_VALID) &&
props[ePR_IPM_FOLDER_ENTRYID].ulPropTag != PT_ERROR)
{
hRes = **pMapi_msgstore->OpenEntry**(props[ePR_IPM_FOLDER_ENTRYID].Value.bin.cb,
(LPENTRYID)props[ePR_IPM_FOLDER_ENTRYID].Value.bin.lpb,
NULL,
MAPI_MODIFY,
&ulType,
(LPUNKNOWN*)&m_lpFinderFolder);
Здесь вызов OpenEntry завершается с ошибкой MAPI_E_INVALID_PARAMETER. Вызов pMapi_msgstore -> GetProps((SPropTagArray *)&cols, 0, &pcount, &props) не завершается ошибкой, но & props заполнен неправильно. Разве нельзя открыть папку Finder почтового ящика делегата?
Благодарю.
1 ответ
Линия
props[ePR_IPM_FOLDER_ENTRYID].ulPropTag != PT_ERROR)
должен быть изменен на
(props[ePR_IPM_FOLDER_ENTRYID].ulPropTag & PROP_TYPE_MASK) != PT_ERROR)