MSG ファイルのロードと解析

Aspose.Email for .NET を使用すると、開発者は Outlook メッセージファイルの内容をロードおよび解析できます。

  • ディスクから MSG ファイルをロードするには、静的メソッドを使用します: MapiMessage.Load メソッド( MapiMessage クラス。このクラスは、さまざまなシナリオ向けに複数の静的ロード機能を提供します。
  • MSG ファイルの内容を解析するには、 MapiMessage 多数のメソッドとプロパティを公開しています。

この記事では、MSG ファイルをロードして解析し、その内容を表示する方法を学びます。ステップ付きのコードサンプルにより、プロジェクトで Outlook MSG ファイルのロードおよび解析機能を実装する手順が明確に理解できるようになります。

まず、ファイルまたはストリームから MSG ファイルをロードする方法を学びます。

MSG ファイルのロード

以下のコードスニペットは、MSG ファイルをロードする方法を示します。

// Create an instance of MapiMessage from file
var msg = MapiMessage.Load(@"message.msg");

// Get subject
Console.WriteLine("Subject:" + msg.Subject);

// Get from address
Console.WriteLine("From:" + msg.SenderEmailAddress);

// Get body
Console.WriteLine("Body" + msg.Body);

// Get recipients information
Console.WriteLine("Recipient: " + msg.Recipients);

// Get attachments
foreach (var att in msg.Attachments)
{
    Console.Write("Attachment Name: " + att.FileName);
    Console.Write("Attachment Display Name: " + att.DisplayName);
}

以下のコード例は、MailMessage を使用して MSG 形式のメッセージをロードする方法を示しています。


var eml = MailMessage.Load("message.msg");

結果として得られるメッセージは埋め込みメッセージ添付を含む EML 形式に変換されることに注意してください。元のメッセージの特定の MSG 形式プロパティを保持したい場合は、このロード方法は使用しないでください。

埋め込みメッセージ添付の元の形式を保持するには、 msgLoadOptions.PreserveEmbeddedMessageFormat プロパティです。


var msgLoadOptions = new MsgLoadOptions();
msgLoadOptions.PreserveEmbeddedMessageFormat = true;
var msg = MailMessage.Load(stream, msgLoadOptions);

ストリームからロード

以下のコードスニペットは、ストリームからファイルをロードする方法を示しています。

// Create an instance of MapiMessage from file
byte[] bytes = File.ReadAllBytes(@"message.msg");

using (MemoryStream stream = new MemoryStream(bytes))
{
    stream.Seek(0, SeekOrigin.Begin);
    // Create an instance of MapiMessage from file
    MapiMessage msg = MapiMessage.Load(stream);

    // Get subject
    Console.WriteLine("Subject:" + msg.Subject);

    // Get from address
    Console.WriteLine("From:" + msg.SenderEmailAddress);

    // Get body
    Console.WriteLine("Body" + msg.Body);

}

埋め込み EML 形式を保持したまま EML を MSG に変換

EML ファイルは以下にロードできます。 MapiMessage クラスにインスタンス化して MailMessage オブジェクトを作成し、 MapiMessage.FromMailMessage メソッドです。EML ファイルに埋め込み EML が含まれる場合は、以下を使用してください。 MapiConversionOptions.PreserveEmbeddedMessageFormat 埋め込み EML ファイルの形式を保持するために、以下のコードスニペットは EML ファイルをロードする方法を示します。 MapiMessage 埋め込み EML ファイルの形式を保持したまま。

// Load the EML file into a MailMessage object
var mailMessage = MailMessage.Load(emlFilePath);

// Set conversion options to preserve the format of embedded EML messages
var options = new MapiConversionOptions
    {
        PreserveEmbeddedMessageFormat = true
    };

// Convert MailMessage to MapiMessage, preserving embedded EML files
var mapiMessage = MapiMessage.FromMailMessage(mailMessage, options);

// Save the converted message in MSG format
mapiMessage.Save(msgFilePath);

Outlook メッセージファイルの解析

Aspose.Email for .NET は以下を提供します: MapiMessage MSG ファイルを開いて解析するために使用されるクラスです。MSG ファイルには多くの受信者がいる可能性があるため、 MapiMessage クラスは以下を公開します 受信者 オブジェクトを返すプロパティ MapiRecipientCollection は、コレクションを表します MapiRecipient オブジェクト。 MapiRecipient オブジェクトは、受信者属性を操作するための追加メソッドも公開します。

以下の手順がこの目的を果たします:

  1. インスタンスを作成します MapiMessage クラスを使用して MapiMessage.Load 静的メソッド。
  2. MSG ファイルから送信者名、件名、本文を次を使用して表示します: 送信者名, Subject および 本文 プロパティ。
  3. 使用する 受信者 コレクションへの参照を取得するプロパティ MapiRecipient MSG ファイルに関連付けられたオブジェクト。
  4. ループで回す MapiRecipientCollection 各項目の内容を表示するコレクション MapiRecipient オブジェクトの公開メソッドを通じて。
//Instantiate an MSG file to load an MSG file from disk
var outlookMessageFile = MapiMessage.Load(dataDir + "message.msg");
//Display sender's name
Console.WriteLine("Sender Name : " + outlookMessageFile.SenderName);
//Display Subject
Console.WriteLine("Subject : " + outlookMessageFile.Subject);
//Display Body
Console.WriteLine("Body : " + outlookMessageFile.Body);
//Display Recipient's info
Console.WriteLine("Recipients : \n");

//Loop through the recipients collection associated with the MapiMessage object
foreach (var rcp in outlookMessageFile.Recipients)
{
	//Display recipient email address
	Console.WriteLine("Email : " + rcp.EmailAddress);
	//Display recipient name
	Console.WriteLine("Name : " + rcp.DisplayName);
	//Display recipient type
	Console.WriteLine("Recipient Type : " + rcp.RecipientType);
}