CE MAPI執行個體講解(2)

來源:互聯網
上載者:User

 第三步:擷取Folder。我們以Drafts為例。
 LPSPropValue rgprops  = NULL;
 ULONG ulValues   = 0;
 //設定我們想拿哪個Folder,詳細可以查閱MSDN關於ImsgStore的介紹,在這裡我將常用的幾個Folder的屬性值列一下:
 //PR_CE_IPM_DRAFTS_ENTRYID     drafts,草稿箱
 //PR_CE_IPM_INBOX_ENTRYID  Inbox,收件匣
 //PR_IPM_OUTBOX_ENTRYID  Outbox,寄件匣
 //PR_IPM_SENTMAIL_ENTRYID  Sentbox,這個不知道叫什麼好,寄件箱?就是已經發送的訊息放的box.
 //PR_IPM_WASTEBASKET_ENTRYID  垃圾箱
 ULONG rgTags[]   = { 1, PR_CE_IPM_DRAFTS_ENTRYID}; 

 // 擷取Folder的Entry ID,然後通過OpenEntry獲得對象
 pMsgStore->GetProps((LPSPropTagArray) rgTags, MAPI_UNICODE, &ulValues, &rgprops);
 pMsgStore->OpenEntry(rgprops[0].Value.bin.cb, (LPENTRYID)rgprops[0].Value.bin.lpb, NULL, MAPI_MODIFY, NULL, (LPUNKNOWN*)pFolder );
 MAPIFreeBuffer(rgprops);
 這樣,我就拿到了需要的Folder,接下來還剩下最後一件事情,就是遍曆message,其實它的過程和拿Store的過程十分相似。

第四步:擷取message。
 LPMAPITABLE  pTable = NULL;
 LPSRowSet pRows = NULL;
 ULONG   ulNumCols = 1;
 //指定我們需要擷取Entry ID屬性
 SizedSPropTagArray(ulNumCols, Columns) =
 { 
  ulNumCols,
  PR_ENTRYID  
 };

 pFolder->GetContentsTable(0, &pTable);
 hr = pTable->SetColumns((LPSPropTagArray)&Columns, 0);
 //從這些代碼可以看出,和擷取Message Store的方法很相似,只不過一個是從Session對象裡拿,而另一個是從Folder裡面拿而已。

 while(SUCCEEDED(pTable->QueryRows(1, 0, &pRows)))
 {
  LPMESSAGE pMsg = NULL;
  ULONG ulMesageType;
  //通過OpenEntry擷取IMessage對象
  pFolder->OpenEntry( pRows->aRow[0].lpProps[0].Value.bin.cb,
     (LPENTRYID)pRows->aRow[0].lpProps[0].Value.bin.lpb,
     NULL,
     MAPI_BEST_ACCESS,
     &ulMesageType,
     (LPUNKNOWN*)&pMsg);
  //這裡拿到每個IMessage對象就代表了Folder裡面的每一條Message,可以通過對它的操作來擷取想要的資訊。
  ......
  //不需要時記的釋放
  pMsg->Release();
  FreeProws(pRows);
  pRows = NULL;
 }
 if(pRows)
 { 
  FreeProws(pRows);
 }
 if(pTable)
 {
  pTable->Release();
 }

終於完工了,第一次寫,不知道講的清楚不,如有不對的地方,歡迎大家指正。

     無聊客
   2005.8.11
yzx0023@gmail.com

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.