2011-07-27 10 views
2

こんにちは私は、ディスク上にある既存のものからOutlook.MailItemを作成したいと思います。私はパスを文字列に格納しており、そこから本文と添付ファイルを保存するためにアクセスしたいと考えています。既存のmsgをパスから新しいOutlook.MailItemへ作成/開くC#

私はC#でそれを開き、アクセスする方法を理解できないようです。

現在、私はフロリダ州のようなものに出て評価

の線に沿って何か持っている "C:\のMSG \ email.msg \ユーザーを" 時間

おかげ

Outlook.Application app = new Outlook.Application(); 

     try 
     { 

      foreach (String fl in Directory.GetFiles(docInfo.LocalPath + _preprocessorDirectory)) 
      { 
       if (Regex.IsMatch(fl.Trim(), _regex, RegexOptions.IgnoreCase)) 
       { 

        Outlook.MailItem email = new Outlook.MailItem(fl); 
        SaveAttachments(email); 
        SaveBody(email); 
       } 
      } 
     } 
     catch (Exception ex) 
     { 
      logger.Error("Error in Process for document " + docInfo.OriginalPath, ex); 
      callback.Invoke(docInfo, false); 
     } 
     return false; 
+1

...しかし、それは、個々の添付ファイルや本文を保存抽出することができます'正規表現'?それがmsgファイルであるかどうかを調べることですか? 'Path'クラスを使うことができます。 'if(Path.GetExtension(fl)==" .msg ")' –

答えて

7

をOutlookでアイテムを開くには:

var email = (Outlook.MailItem)app.Session.OpenSharedItem(fl)

そこからAttachmentsプロパティとBodyプロパティにアクセスすることができます。また

Regex.IsMatchは、ファイルの拡張子を判定しますであれば、私は私のコメントで述べたように、私はこのNuGetパッケージを代わりに使用

+0

私が探していたものとまったく同じですが、どうやってそこに到達するか分からなかったでしょう。 JavaからC#を初めて使用しました。ありがとうございます。 app.sessionを使って...私が考えていたものではなく、実際に何が起こっているのか調べる予定でした。ありがとう。 regexを使用して、さまざまなファイルに対して異なるチェックを使用するため、システムの柔軟性を維持します。すなわち、 pics、docs、pdfs ... app.configに格納するだけで1か所で変更できます。ありがとう。 – extraordin

0

Path.GetExtension()を使用します。https://www.nuget.org/packages/MSGReader/

が正常に動作するようです。私は、Outlookをインストールする必要がないので、MS OutlookApiライブラリよりも好きです。

私は、あなたの質問にを求めているとして、それは、MailItemのインスタンスを作成しないことを理解する - あなたが使用しているのはなぜ

関連する問題