2014-01-09 73 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事件传递的项目作为参数,为什么不利用呢?