2013-12-25 5 views
2

Я работаю над приложением, которое захватывает некоторые события Outlook. Можно ли обнаружить событие, когда отправлено электронное письмо. Я не имею в виду, когда пользователь нажимает кнопку «отправить», но когда сообщение действительно отправляется и больше не находится в папке «Исходящие». Заранее спасибо.Захват, когда действительно отправлено письмо

UPDATE

мне удалось захватить Items.ItemAdd события на присланной папке почт. Для того, чтобы проверить, является ли добавлен последний адрес электронной почты в папке исходящих это один я interestd в Я попытался это:

STDMETHODIMP CItemsEventListener::HandleItemAdd(CString p_date, CString p_time) 
{ 
    CComPtr<Outlook::_Application> spApplication; 
    CComPtr<Outlook::_NameSpace> spSession; 
    CComPtr<Outlook::MAPIFolder> spSentMailsFolder; 
    CComPtr<Outlook::_Items> pSentboxItems; 
    spSentMailsFolder->get_Items(&pSentboxItems); 
    CComPtr<Outlook::_MailItem> pSentMail; 
    pSentMail = pSentboxItems->GetLast(); 
    //do staff 
    return S_OK; 
}` 

Я получаю ошибку компиляции:

error C2660: 'Outlook::_Items::GetLast' : the function doesn't take 0 arguments 

Какой аргумент должен Я перехожу к функции?

ответ

1

MailItem.Send и Application.ItemSend события происходят до того, как сообщение действительно отправлено.

Для захвата, когда сообщение действительно отправлено, используйте событие Items.ItemAdd в папке «Отправленные».

+0

Спасибо за ваш ответ @Dimtry, я никогда не работал с событиями и папками Outlook, для других событий, таких как SyncEvents и событий приложений, я реализую интерфейс IDispatch. Тот же подход будет работать для события Items.ItemAdd? Какие шаги я должен выполнить. Я искал примеры, но я нашел только примеры VB или надстройки, но я разрабатываю отдельное приложение C++. – Kira

+0

Если вы импортируете библиотеку объектов объектной модели Outlook, вы должны получить классы-оболочки, которые отображают события. В противном случае вы можете сделать это на низком уровне (QI - объект, который вызывает события для IConnectionPointerContainer, вызывает IConnectionPointerContainer :: FindConnectionPoint, передавая соответствующий идентификатор события dispinterfaace GUID, вызывает IConnectionPointer :: Консультирует передачу вашей реализации интерфейса IDispatch, которая будет получать уведомления о событиях через IDispatch :: Invoke) –

+0

Спасибо @ Dimtry, моя жизнь как обычно :) ты мне очень помог – Kira

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