2017-05-08 35 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

メールアイテムのプロパティを読むことはできますか? –

+0

はい。私は多くの人にアクセスできます。 –

+0

SaveAsメソッドでOutlook.OlSaveAsType.olMSGを試しましたか? –

答えて

0

申し訳ありません。 SaveAsメソッドが動作することを発見しました。私はちょうど現在のMailItemの正しいインスタンスがありませんでした。私は理由を知りませんが - それは、私は、次の側面に気づいた

1

:-)別の質問です:コードはリボンボタンでアクセスされ

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

リボンイベントハンドラで新しいアプリケーションのインスタンスを作成する必要はありません。代わりに、アドインクラスのApplicationプロパティを使用する必要があります。

関連する問題