Aspose.Email FOSS for .NET は、MIT ライセンスの、依存関係のない C# ライブラリで、Microsoft Outlook .msg ファイル、Compound File Binary (CFB) コンテナ、EML メッセージの操作が可能です。単一の NuGet パッケージを追加するだけで、Microsoft Outlook や任意のプロプライエタリ ランタイムをインストールせずに、メールメッセージの読み取り、作成、処理をすぐに開始できます。
このライブラリは 2 つのレベルのアクセスを提供します。低レベルでは、CfbReader と CfbWriter が CFB バイナリコンテナを完全に制御でき、ディレクトリエントリの走査、ストレージノードとストリームデータの読み書き、そして生のセクタレイアウトの検査が可能です。MsgReader と MsgWriter は CFB 上の MSG フォーマットを処理し、MAPI プロパティストリーム、受信者テーブル、添付サブストレージを公開します。高レベルでは、MapiMessage を使用して新しいメッセージをゼロから作成し、件名、本文、送信者、受信者を読み取り、添付ファイルを管理し、組み込みの MIME 実装を介して MSG と EML フォーマット間の変換が可能です。
このライブラリは .NET 8.0 以降を対象としており、ネイティブ依存関係がないため、Windows、Linux、macOS、Docker コンテナ、サーバーレス関数に適しています。追加機能や商用サポートについては、Aspose.Email for .NET を参照してください。
CfbReader.FromFile()、CfbReader.FromStream()、または new CfbReader(data) を使用してロードします。IterStorages()、IterStreams()、IterChildren()、およびIterTree()を使用して、ストレージ、ストリーム、子要素を反復処理します。ResolvePath(names) を使用して、名前チェーンで特定のストリームを検索するために、入れ子になったストレージ階層をナビゲートします。CfbDocument を使用してプログラムで CFB ドキュメントを作成し、CfbWriter.ToBytes() または CfbWriter.WriteFile() を介してバイト列またはファイルにシリアライズします。CfbStorage と CfbStream ノードを添付します。.msg ファイルのコンテナ形式です — 直接 CFB にアクセスすることで、フォレンジック検査と修復が可能になります。MsgReader.FromFile() または MsgReader.FromStream() で開き、基礎となる MAPI プロパティ ストリーム、受信者レコード、および添付ファイルサブストレージにアクセスします。MsgDocument から MsgWriter.ToBytes() または MsgWriter.WriteFile() を使用して MSG ファイルを生成します。MsgStorage、MsgStream、および MsgStorage.FindStream() を介して読み取ります。MsgStorage.FindStream() と MsgStorage.FindStorage() を使用して、名前付きサブエントリを検索します。.msg ファイルを一括読み取り、メタデータまたは添付ファイルを抽出します。.msg ファイルを作成し、Outlook ベースのメールシステムに配信します。MapiMessage.Create(subject, body) で作成し、SenderName、SenderEmailAddress、および HtmlBody を設定します。AddRecipient() 経由で To、Cc、および Bcc の受信者を添付します。AddAttachment() を使用してファイルおよびストリームの添付を追加するか、MapiAttachment オブジェクトを Filename、MimeType、ContentId、および Data で直接構築します。message.Save() または message.Save(stream) でシリアライズし、MapiMessage.FromFile() または MapiMessage.FromStream() で再読み込みします。message.Attachments を反復処理し、各 attachment.Data をディスクに保存します。message.Subject、message.Body、message.SenderEmailAddress、および message.Recipients にアクセスします。.eml ファイル (RFC 5322 / MIME) を MapiMessage.LoadFromEml(stream) を介して完全な MapiMessage オブジェクトに解析します。MapiMessage を MIME 形式にシリアライズし、message.SaveToEml() または message.SaveToEml(stream) を使用します。.eml と .msg ファイルのアーカイブを単一の形式に正規化します。.eml フィクスチャを生成し、MSG の往復でデータ損失がないことを確認します。ストリームから Outlook MSG ファイルを開き、件名を表示します — Microsoft Outlook は不要です。
using System.IO;
using Aspose.Email.Foss.Msg;
using var stream = File.OpenRead("sample.msg");
var message = MapiMessage.FromStream(stream);
Console.WriteLine(message.Subject);
送信者、受信者、添付ファイルを含む完全なメールを作成し、MSG ファイルに書き込みます。
using System.IO;
using Aspose.Email.Foss.Msg;
var message = MapiMessage.Create("Hello", "Body");
message.SenderName = "Alice";
message.SenderEmailAddress = "alice@example.com";
message.AddRecipient("bob@example.com", "Bob");
using var attachmentStream = new MemoryStream("abc"u8.ToArray());
message.AddAttachment("note.txt", attachmentStream, "text/plain");
using var output = File.Create("hello.msg");
message.Save(output);
標準の .eml ファイルを読み込み、組み込みの MIME パーサーを使用して Outlook .msg ファイルとして保存します。
using System.IO;
using Aspose.Email.Foss.Msg;
using var input = File.OpenRead("message.eml");
var message = MapiMessage.LoadFromEml(input);
using var msgOutput = File.Create("message.msg");
message.Save(msgOutput);
using var emlOutput = File.Create("roundtrip.eml");
message.SaveToEml(emlOutput);