如何使用Outlook MAPI打开代理邮箱的“Finder”文件夹
问题描述:
我在查找使用Outlook MAPI打开代理邮箱的“Finder”文件夹的方法。如何使用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)不会失败,但&道具未正确填充。 是否无法打开代理邮箱的Finder文件夹?
谢谢。
答
线
props[ePR_IPM_FOLDER_ENTRYID].ulPropTag != PT_ERROR)
需要改变,以
(props[ePR_IPM_FOLDER_ENTRYID].ulPropTag & PROP_TYPE_MASK) != PT_ERROR)
我喜欢这里的'PROP_TYPE'宏。无论哪种方式,您都需要执行此操作来检查您从GetProps获得的每个属性,因为缺少/缺失属性在MAPI中非常常见。 – sgriffin