2017-05-08 63 views
0

我試圖在Outlook中保存當前的電子郵件。該代碼通過功能區按鈕進行訪問。當我在MailItem上執行SaveAs方法時,我總是得到0x80004004(E_ABORT)異常。Outlook.MailItem.SaveAs方法始終以0x80004004失敗(E_ABORT)

這是我的代碼:

 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; 
       } 
      } 
     } 

如果我手動保存它從Outlook使用完全相同的文件名,並在同一個位置,我可以載入它在我的代碼,但我不能使用SaveAs方法將相同的電子郵件保存在代碼中。

我已經嘗試過各種OlSaveAsType類型。還有MailItem類型而不是_MailItem類型。

任何想法?

+0

你能讀取任何mailitem屬性嗎? –

+0

是的。我可以訪問很多。 –

+0

您是否在SaveAs方法中嘗試使用Outlook.OlSaveAsType.olMSG? –

回答

0

對不起。發現SaveAs方法有效。我只是沒有一個當前MailItem的正確實例。雖然我不知道爲什麼 - 但是這:-)

1

我已經注意到了以下幾個方面的另一個問題:

的代碼與功能區按鈕訪問。

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

沒有必要創造色帶事件處理程序創建新的應用實例。相反,您需要使用加載項類的Application屬性。