2014-01-09 2 views
0

Я пытаюсь получить количество вложений электронной почты при его отправке (Application.Send event), вот код, который я использую.Получите количество вложений отправленного сообщения

_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-> Count (нарушение доступа). Я думаю, что указатель элемента почты имеет значение null. Что я делаю не так?

+1

Добавление проверок здравомыслия, безусловно, будет хорошим шагом; например 'mi = pOutboxItems-> GetLast(); утверждают (ми); ' – Till

ответ

1

Почему вы извлекаете последний элемент в папке «Исходящие», который отнюдь не гарантированно является тем, который отправляется, и, скорее всего, вы вернетесь туда, поскольку в папке «Исходящие» еще нет сообщений, когда Application.ItemSend пожары событий?

Приложение Application.ItemSend передает элемент в качестве аргумента, почему бы не использовать его?

Смежные вопросы