質問

.NET で Outlook .MSG ファイルから読み取る必要があります それなし Outlook 用 COM API を使用します (アプリが実行されるマシンにはインストールされないため)。それを行うための無料のサードパーティライブラリはありますか?From、To、CC、BCCフィールドを抽出したいと考えています。送信/受信日付フィールドも MSG ファイルに保存すると便利です。

役に立ちましたか?

解決 2

アップデート: というサードパーティのCOMライブラリを見つけました。 見通しの償還 現時点ではそれがうまく機能しています。.NET の COM-Interop 経由でこれを使用する場合は、使用が完了したらすべての COM オブジェクトを忘れずに解放してください。そうしないと、アプリケーションがランダムにクラッシュします。

他のヒント

CodeProject には、COM を使用せずに .msg ファイルを読み取るためのコードが用意されています。見る ここ.

以下にサンプル VBA コードを示します。 見通しの償還 フセイントが見つけたもの。

Public Sub ProcessMail()

   Dim Sess As RDOSession
   Dim myMsg As RDOMail
   Dim myString As String

   Set Sess = CreateObject("Redemption.RDOSession")
   Set myMsg = Sess.GetMessageFromMsgFile("C:\TestHarness\kmail.msg")

   myString = myMsg.Body
   myMsg.Body = Replace(myString, "8750", "XXXX")

   myMsg.Save

End Sub

Microsoft はこれを文書化しています: .MSG ファイル形式の仕様

それは「構造化ストレージ」に関するドキュメントです。無事に使用できました アンドリュー・ピースのコード これまでは、.NET (C++/CLI を使用) 上でもこれらを読むことができましたが、クリーンで非常に理解しやすかったです。基本的に、必要なレコードを特定し、それらのレコードをクエリする必要があります。Outlook のバージョンやメッセージの種類が異なるとレコードも異なるため、少し面倒になります...

あなたは私たちの(商用)を試すことができます レベックス セキュア メール 図書館。OutlookのMSG形式を読み込むことができます。次のコードはその方法を示しています。

// Load message
MailMessage message = new MailMessage();
message.Load(@"c:\Temp\t\message.msg");

// show From, To and Sent date
Console.WriteLine("From: {0}", message.From);
Console.WriteLine("To: {0}", message.To);
Console.WriteLine("Sent: {0}", message.Date.LocalTime);

// find and try to parse the first 'Received' header
MailDateTime receivedDate = null;
string received = message.Headers.GetRaw("Received");
if (received != null)
{
    int lastSemicolon = received.LastIndexOf(';');
    if (lastSemicolon >= 0)
    {
        string rawDate = received.Substring(lastSemicolon + 1);
        MimeHeader header = new MimeHeader("Date", rawDate);
        receivedDate = header.Value as MailDateTime;
    }
}

// display the received date if available
if (receivedDate != null)
    Console.WriteLine("Received: {0}", receivedDate.LocalTime);

送信日と受信日、およびそれらがメッセージ内でどのように表現されるかについての詳細は、次のサイトを参照してください。 http://forum.rebex.net/questions/816/extract-senttime-receivetime-and-time-zones

テキスト エディタで .MSG ファイルを開くと、探している情報がファイル内にプレーン テキストとして保存されていることがわかると思います。(少なくとも私がチェックしたすべてのメッセージにありました)

ファイルを解析して「From:」や「To:」などで始まる行を探すコードを書くのは非常に簡単です。そして必要な情報を抽出します。

電子メールの本文も必要な場合は、少し複雑になる可能性があります。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top