문제

나는 Outlook 2007 Addin을 쓰고 있습니다. 내가하는 일은 다음과 같습니다.

        private void ThisAddIn_Startup(object sender, System.EventArgs e)
    {
        Outlook.Folder root;

        //creates Spam folder if it dosen't exist
        if (!SpamFolderExist())
        {
            CreateSpamFolder();
        }

        root = (Outlook.Folder)this.Application.Session.DefaultStore.GetRootFolder();

        //set BeforeItemMove event for spam and inbox folders
        spamFolder = (Outlook.Folder)root.Folders["Spam"];
        inboxFolder = (Outlook.Folder)this.Application.ActiveExplorer().Session.GetDefaultFolder(Outlook.OlDefaultFolders.olFolderInbox);

        spamFolder.BeforeItemMove += new Microsoft.Office.Interop.Outlook.MAPIFolderEvents_12_BeforeItemMoveEventHandler(BeforeItemMoveFromSpam);
        inboxFolder.BeforeItemMove += new Microsoft.Office.Interop.Outlook.MAPIFolderEvents_12_BeforeItemMoveEventHandler(BeforeItemMoveFromInbox);

        //set new mail event
        this.Application.NewMail += new Microsoft.Office.Interop.Outlook.ApplicationEvents_11_NewMailEventHandler(OnNewMail);
    }

그리고 문제는 이전에 이전 MovefromInbox와 이전에 이전 MoveFromSpam 방법에 아무것도 쓰지 않더라도 응용 프로그램은 이상한 동작을 가지고 있다는 것입니다. 메일을 옮기면 특정 메일에 대한 더 이상 이동 조치를 수행하지 않습니다. 메일이 차단 된 것 같습니다. 다른 이동 조치를 수행 한 후 다른 메일이 차단되고 이전에 차단 된 메일을 이동할 수 있습니다. 아이디어는 메일을 차단 한 후에는 항상 이동할 수없는 메일 이상이 될 것입니다. 다시 말해, 무작위로 움직이는 행동의 일부는 실패합니다. 나는 폴더에서 다른 폴더로 메일을 옮기는 것 외에 다른 일을하지 않고 오류 메시지를받지 않는다고 말해야합니다. 또한 메소드의 끝에서 PrectemMove 이벤트 처리기의 취소 매개 변수를 False로 설정하려고했지만 동일한 동작을 얻었습니다.

도움이 되었습니까?

해결책

당신은 그것을 76mel 받았습니다. 같은 문제가있었습니다 (폴더를 PreveritemMove 이벤트에 연결하면 해당 폴더에서 메시지를 옮길 때 새 폴더에서 다른 폴더로 소량으로 이동할 수 없었습니다). .

이벤트 핸들러의 끝에 Marshal.releasecomobject ()를 추가하면 완벽하게 수정되었습니다.

다른 팁

위의 문제 설명을 이해하면

항목을받은 편지함에서 스팸 폴더로 이동하면 이벤트가 발사되지만 동일한 항목을 다시 이동하면 작동하지 않습니다. ?? 이동할 Alls 폴더의 이벤트를 연결해야합니다.

일어나는 일은 이벤트 핸들러 마샬에서 객체를 해제해야 할 수도 있다는 것입니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top