1. 製品
  2.   Aspose.Email
  3.   Aspose.Email FOSS for .NET

Aspose.Email FOSS 向け .NET

Outlook MSG ファイル、CFB コンテナ、EML メッセージを .NET から読み取り、作成、処理できます — 無料かつオープンソースで、Microsoft Outlook への依存はありません。

MSG、CFB、EML ファイル用のオープンソース .NET ライブラリ

Aspose.Email FOSS for .NET は、MIT ライセンスの、依存関係のない C# ライブラリで、Microsoft Outlook .msg ファイル、Compound File Binary (CFB) コンテナ、EML メッセージの操作が可能です。単一の NuGet パッケージを追加するだけで、Microsoft Outlook や任意のプロプライエタリ ランタイムをインストールせずに、メールメッセージの読み取り、作成、処理をすぐに開始できます。

このライブラリは 2 つのレベルのアクセスを提供します。低レベルでは、CfbReaderCfbWriter が CFB バイナリコンテナを完全に制御でき、ディレクトリエントリの走査、ストレージノードとストリームデータの読み書き、そして生のセクタレイアウトの検査が可能です。MsgReaderMsgWriter は CFB 上の MSG フォーマットを処理し、MAPI プロパティストリーム、受信者テーブル、添付サブストレージを公開します。高レベルでは、MapiMessage を使用して新しいメッセージをゼロから作成し、件名、本文、送信者、受信者を読み取り、添付ファイルを管理し、組み込みの MIME 実装を介して MSG と EML フォーマット間の変換が可能です。

このライブラリは .NET 8.0 以降を対象としており、ネイティブ依存関係がないため、Windows、Linux、macOS、Docker コンテナ、サーバーレス関数に適しています。追加機能や商用サポートについては、Aspose.Email for .NET を参照してください。

CFB コンテナの読み取りと書き込み

  • Open CFB files: ファイル パス、ストリーム、またはバイト配列から既存の CFB コンテナを CfbReader.FromFile()CfbReader.FromStream()、または new CfbReader(data) を使用してロードします。
  • ディレクトリツリーを走査: IterStorages()IterStreams()IterChildren()、およびIterTree()を使用して、ストレージ、ストリーム、子要素を反復処理します。
  • パスを解決: ResolvePath(names) を使用して、名前チェーンで特定のストリームを検索するために、入れ子になったストレージ階層をナビゲートします。
  • CFB コンテナの作成: CfbDocument を使用してプログラムで CFB ドキュメントを作成し、CfbWriter.ToBytes() または CfbWriter.WriteFile() を介してバイト列またはファイルにシリアライズします。
  • ストレージとストリームを追加: シリアライズする前に、任意のストレージノードに CfbStorageCfbStream ノードを添付します。

CFB アクセスが使用される場所

  • MSG file inspection: CFB は Outlook .msg ファイルのコンテナ形式です — 直接 CFB にアクセスすることで、フォレンジック検査と修復が可能になります。
  • Custom binary formats: 任意のレガシーアプリケーションがデータ保存にCFBを使用している場合、COM依存なしで読み書きできます。
  • データ復旧: 完全なディレクトリツリーを走査し、損傷したまたは非標準のCFBファイルから生のストリームバイトを抽出します。
  • Binary round-trip testing: ドキュメントをバイトにシリアライズし、再ロードして自動テストでロスレスシリアライズを検証します。

MSG ファイルの読み取りと書き込み

  • MSG ファイルを読む: Outlook MSG ファイルを MsgReader.FromFile() または MsgReader.FromStream() で開き、基礎となる MAPI プロパティ ストリーム、受信者レコード、および添付ファイルサブストレージにアクセスします。
  • MSG ファイルを書き込む: MsgDocument から MsgWriter.ToBytes() または MsgWriter.WriteFile() を使用して MSG ファイルを生成します。
  • 低レベル MAPI アクセス: トップレベルのプロパティ ストリーム、名前付きプロパティ、および添付データを MsgStorageMsgStream、および MsgStorage.FindStream() を介して読み取ります。
  • MSG ストレージ ナビゲーション: MsgStorage.FindStream()MsgStorage.FindStorage() を使用して、名前付きサブエントリを検索します。

MSG 処理が使用される場所

  • Email archival pipelines: アーカイブディレクトリから .msg ファイルを一括読み取り、メタデータまたは添付ファイルを抽出します。
  • 移行ツール: MSG コレクションを標準フォーマットに変換し、Outlook 以外のシステムにインポートできるようにします。
  • 法的開示: 生の MAPI プロパティ ストリームを解析して、非標準プロパティを含むすべてのメッセージ フィールドを抽出します。
  • 自動レポート配信: プログラムで .msg ファイルを作成し、Outlook ベースのメールシステムに配信します。

ハイレベル メッセージ API

  • メッセージを作成: 完全なメールを MapiMessage.Create(subject, body) で作成し、SenderNameSenderEmailAddress、および HtmlBody を設定します。
  • 受信者を追加: メールアドレスと表示名を使用して、AddRecipient() 経由で ToCc、および Bcc の受信者を添付します。
  • 添付ファイルの管理: AddAttachment() を使用してファイルおよびストリームの添付を追加するか、MapiAttachment オブジェクトを FilenameMimeTypeContentId、および Data で直接構築します。
  • 保存と再読み込み: message.Save() または message.Save(stream) でシリアライズし、MapiMessage.FromFile() または MapiMessage.FromStream() で再読み込みします。

ハイレベル API が使用される場所

  • 自動メール生成: データレコードからバッチジョブで数千のパーソナライズされたMSGファイルを生成します。
  • テストフィクスチャの作成: 統合テストスイート向けに、予測可能な内容を持つ既知の良好な MSG ファイルを作成します。
  • Attachment extraction: MSG ファイルをロードし、message.Attachments を反復処理し、各 attachment.Data をディスクに保存します。
  • Property inspection: COM オートメーションを使用せずに message.Subjectmessage.Bodymessage.SenderEmailAddress、および message.Recipients にアクセスします。

EML と MIME の変換

  • Load EML into MapiMessage: 標準的な .eml ファイル (RFC 5322 / MIME) を MapiMessage.LoadFromEml(stream) を介して完全な MapiMessage オブジェクトに解析します。
  • MapiMessage を EML として保存: MapiMessage を MIME 形式にシリアライズし、message.SaveToEml() または message.SaveToEml(stream) を使用します。
  • ラウンドトリップの忠実度: 件名、本文、HTML 本文、送信者、受信者、および添付ファイルはすべて EML → MSG → EML の往復で保持されます。
  • 外部MIMEパーサーなし: EML パーシングはライブラリ内でネイティブに実装されており — System.Net.Mail への依存は不要です。

EML 変換が使用される場所

  • Format bridging: メールサーバーから EML としてメールを受信し、Outlook 互換のストレージ用に MSG に変換します。
  • 標準準拠: プロプライエタリな MSG ファイルを標準 MIME に変換し、任意のメールトランスポートへ配信します。
  • アーカイブ正規化: 混在した .eml.msg ファイルのアーカイブを単一の形式に正規化します。
  • テストワークフロー: テストで .eml フィクスチャを生成し、MSG の往復でデータ損失がないことを確認します。

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 メッセージを作成して保存する

送信者、受信者、添付ファイルを含む完全なメールを作成し、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 を MSG に変換する

標準の .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);
  

サポートと学習リソース

 日本語