如何使用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) 
+0

我喜欢这里的'PROP_TYPE'宏。无论哪种方式,您都需要执行此操作来检查您从GetProps获得的每个属性,因为缺少/缺失属性在MAPI中非常常见。 – sgriffin