2017-05-08 6 views
0

Outlook에서 현재 전자 메일을 저장하려고합니다. 코드는 리본 버튼으로 액세스됩니다. MailItem에서 SaveAs 메서드를 수행하면 항상 0x80004004 (E_ABORT) 예외가 발생합니다. Outlook.MailItem.SaveAs 메서드는 항상 0x80004004 (E_ABORT)와 함께 실패합니다.

내 코드입니다 : 나는 동일한 파일 이름과 같은 위치에서 Outlook에서 수동으로 저장하면

 Outlook._Application outlook = new Outlook.Application(); 
     if (outlook.ActiveExplorer().Selection.Count > 0) 
     { 
      Object selectedObject = outlook.ActiveExplorer().Selection[1]; 

      if (selectedObject is Outlook.MailItem) 
      { 
       Outlook._MailItem mailItem = (selectedObject as Outlook._MailItem); 

       Helpers.CheckDir(userAppPath + @"temp"); 

       try 
       { 
        mailItem.SaveAs(userAppPath + @"temp\tempmail.msg", Outlook.OlSaveAsType.olMSGUnicode); 
        doUpload = true; 
       } 
       catch (Exception ex) 
       { 
        doUpload = false; 
       } 
      } 
     } 

내가 내 코드에서 다시로드 할 수 있습니다,하지만 난 할 수 없습니다 SaveAs 메서드를 사용하여 동일한 전자 메일을 코드에 저장합니다.

다양한 OlSaveAsType 유형을 시도했습니다. 또한 MailItem 형식 대신 _MailItem 형식이 필요합니다.

아이디어가 있으십니까?

+0

mailitem 속성을 읽을 수 있습니까? –

+0

예. 나는 많은 사람들에게 접근한다. –

+0

SaveAs 메서드에서 Outlook.OlSaveAsType.olMSG를 사용해 보셨습니까? –

답변

0

죄송합니다. SaveAs 메서드가 작동한다는 것을 알았습니다. 방금 현재 MailItem의 올바른 인스턴스가 없습니다. 그 이유를 알 수 없지만 -하지만 나는 다음과 같은 측면을 발견했습니다

1

:-) 또 다른 질문 : 코드는 리본 버튼으로 액세스 할

.

Outlook._Application outlook = new Outlook.Application(); 

리본 이벤트 처리기의 새로운 응용 프로그램 인스턴스를 생성 할 필요가 없습니다. 대신, 추가 기능 클래스의 Application 속성을 사용해야합니다.