2014-01-09 58 views
0

我正在嘗試獲取電子郵件發送附件的數量(Application.Send事件),這裏是我正在使用的代碼。獲取已發送電子郵件的附件數量

_ApplicationPtr pApp("Outlook.Application"); 
_NameSpacePtr pNameSpace; 
MAPIFolderPtr pOutbox; 
_ItemsPtr pOutboxItems; 
_MailItemPtr mi; 
pNameSpace = pApp->GetNamespace(L"MAPI"); 
pOutbox = pNameSpace->GetDefaultFolder(olFolderOutbox); 
pOutboxItems = pOutbox->Items; 
mi=pOutboxItems->GetLast(); 
long att_Sent=mi->GetAttachments()->Count;//Exception here 
mi->Delete(); 

我總是在MI-> GetAttachments->計數線(訪問衝突)異常。我認爲郵件項目指針是空的。我究竟做錯了什麼?

+1

添加完整性檢查肯定是一個很好的舉措;如'MI = pOutboxItems-> GetLast();斷言(MI);' – Till

回答

1

爲什麼您要檢索發件箱中的最後一個項目,這完全不能保證是發送的最後一個項目,並且很有可能您將返回null,因爲發件箱文件夾中沒有消息時Application.ItemSend事件火災?

Application.ItemSend事件傳遞的項目作爲參數,爲什麼不利用呢?