我正在寻找一种使用Outlook MAPI打开代理邮箱的“Finder”文件夹的方法。
我通过调用CreateStoreEntryID创建了委托邮箱的EntryID。使用此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文件夹?
感谢。
答案 0 :(得分:0)
该行
props[ePR_IPM_FOLDER_ENTRYID].ulPropTag != PT_ERROR)
需要更改为
(props[ePR_IPM_FOLDER_ENTRYID].ulPropTag & PROP_TYPE_MASK) != PT_ERROR)