2012-09-20 3 views
6

Outlook에서 항목을 보낼 때 어떤 처리를 수행하려면 ApplicationEvents_11_ItemSendEventHandler (http://msdn.microsoft.com/en-us/library/microsoft.office.interop.outlook.applicationevents_11_itemsendeventhandler.aspx 참조)을 사용하고 있습니다.Outlook에서 "Item Sent"이벤트가 발생했습니다.

그러나, 나는 그런 보낸 사람으로, 특정 정보를 얻을 수없는거야 오히려 "전송"보다 "보내기"에서이 이벤트가 발생로서, 다른 이벤트가 있나요 시간 등

을 보내 화재 항목이 실제로 보냈습니까? 이 블로그 게시물을 읽었습니다. http://easyvsto.wordpress.com/2010/07/27/how-to-save-mail-content-when-a-mail-is-sent-from-outlook/하지만 사용자가이 기능을 사용 중지 할 수 있다는 점을 고려하여 보낸 편지함 폴더에 나타나는 항목에 따라주의해야합니다.

편집 : 나는 실제로 '보낸 편지함 폴더를보고 "접근 방식을 시도하고 ItemAdd 이벤트는 내가 Outlook을 다시 시작할 때까지 다시는 그 다음 내가 보내는 첫 번째 이메일 화재 것으로 보인다 것으로 나타났습니다 것을 추가해야 . 내 코드는 다음과 같습니다.

var sentMail = Application.Session.GetDefaultFolder(Outlook.OlDefaultFolders.olFolderSentMail); 
sentMail.Items.ItemAdd += new Outlook.ItemsEvents_ItemAddEventHandler(Items_ItemAdd); 

그리고 내 방법

...

void Items_ItemAdd(object item) 
{ 
    MessageBox.Show(((Outlook.MailItem)item).Subject); 
} 
+0

당신은 항목 (클래스 변수에) 살아있는 개체를 유지해야 사건들이 발포하기 때문이다. 귀하의 경우 컴파일러는 임시 변수를 만들어서 sentMail.Items 객체를 유지합니다. 해당 변수가 가비지 수집되면 이벤트가 실행을 중지합니다. –

답변

4

모달 대화 상자 (WPF/윈폼 MessageBox)를 사용하는 경우, 당신은 첫 번째 이벤트 트리거를 얻을 것이다. 비 블로킹 이벤트 처리기 (가능하게는 항목 큐 전략)을 구현해야합니다.

차단 UI 호출 모달 대화 상자를 사용하지 마십시오. Outlook은 UI가 차단 된 것을 확인하고 후속 인터럽트를 트리거하지 않습니다.

this form post for reference을 참조하십시오.


당신이 보낸 항목 저장을 제어하기위한 사용자의 기본 설정에 대한 걱정, 그냥 다음 코드를 사용하여 우선 ...

MailItem.DeleteAfterSubmit = false; // force storage to sent items folder (ignore user options) 
Outlook.Folder sentFolder = ThisAddIn.Application.Session.GetDefaultFolder(Outlook.OlDefaultFolders.olFolderSentMail); 
if (sentFolder != null) 
    MailItem.SaveSentMessageFolder = sentFolder; // override the default sent items location 
MailItem.Save(); 
+0

@SilverNinja - 답변을 주셔서 감사합니다. 포럼 게시물에는 ItemAdd 이벤트와 관련된 유용한 정보가 있습니다. 건배. –