はじめに

Aspose.Email FOSS for .NET は、無料のオープンソース C# ライブラリで、Outlook
MSG ファイル、Compound File Binary (CFB) コンテナ、EML メッセージを .NET
アプリケーション内で直接操作できます — Microsoft Outlook は不要、COM 相互運用も不要、ネイティブ ライブラリも不要です。配布
それを単一の NuGet パッケージとして行い、Windows、Linux、macOS、Docker コンテナ、
およびサーバーレス関数でも同様に実行されます。

このライブラリは、エンタープライズおよび統合作業で繰り返し発生する問題を解決します:Outlook .msg ファイルは何百万人ものビジネスユーザーによって作成されますが、Outlook がなくてもこれらを解析するには、従来は COM オートメーションや高価な商用ライブラリが必要でした。Aspose.Email FOSS for .NET は、MSG、基盤となる CFB バイナリコンテナ、そして EML/MIME 形式に対する完全な読み書きサポートを提供します — すべて MIT ライセンスの下で、使用制限なしで利用できます。

メールアーカイブパイプライン、マイグレーションツール、添付ファイル抽出ツール、
または自動MSGジェネレータを構築しているかどうかにかかわらず、このライブラリはメール形式のすべてのバイトに直接、低レベルでアクセスでき、
さらに高レベルの MapiMessage API を備えており、数分で始められます。


主な機能

Outlook MSG ファイルの読み取り

任意の.msgファイルをパスまたはストリームからMsgReader.FromFile()またはMsgReader.FromStream()で開くことができます。
MsgStorageおよびMsgStreamを使用して、MAPI プロパティ ストリーム全体、受信者レコード、添付ファイルのサブストレージを生バイトレベルでアクセスできます。

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 ファイルをゼロから作成する

MapiMessage.Create() を使用してプログラムで完全なメールを作成します。件名、プレーンテキスト 本文、HTML 本文、送信者名、送信者メールアドレス、配信時間、インターネットメッセージ ID を設定し、次に AddRecipient() で受信者を追加し、AddAttachment() で添付ファイルを追加します。 message.Save() でシリアライズします。

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 に変換(および逆変換)

標準的な RFC 5322 .eml ファイルを MapiMessageMapiMessage.LoadFromEml() で読み込み、Outlook .msg ファイルとして保存する — または MapiMessage.SaveToEml() で逆のプロセスを行います。
組み込みの MIME パーサーは、件名、本文、HTML 本文、送信者、受信者、添付ファイルを完全な EML ↔ 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);

低レベル CFB コンテナ アクセス

Outlook MSG ファイルは、階層型バイナリコンテナであり、ファイルシステムに似た Compound File Binary (CFB) フォーマット上に構築されています。CfbReader は完全なディレクトリツリーを公開します:IterStorages()IterStreams()IterChildren() を使用してストレージとストリームを反復し、ResolvePath() を使用してパスで特定のエントリに移動し、GetStreamData() を使用して生のストリームバイトを読み取ります。

CfbWriter は、最初から CFB ドキュメントを構築しシリアライズできるようにします。CfbDocument を作成し、
CfbStorageCfbStream ノードを添付し、CfbWriter.ToBytes() または
CfbWriter.WriteFile() を呼び出してシリアライズします。

MAPI プロパティと添付ファイルへのアクセス

MapiPropertyCollection クラスは、任意の MSG またはストレージ オブジェクトに対して型付けされた MAPI プロパティ アクセスを提供します: 標準の CommonMessagePropertyId または PropertyTypeCode 列挙値と共に Get()Set()Add()、および Remove() を使用してください。添付ファイルのメタデータとバイナリ データは MapiAttachment プロパティを介してアクセスできます: FilenameMimeTypeContentId、および Data


クイックスタート

パッケージをインストール:

dotnet add package Aspose.Email.Foss

MSG ファイルから件名を読み取る:

using System.IO;
using Aspose.Email.Foss.Msg;

using var stream = File.OpenRead("sample.msg");
var message = MapiMessage.FromStream(stream);
Console.WriteLine(message.Subject);
Console.WriteLine(message.SenderEmailAddress);
foreach (var recipient in message.Recipients)
    Console.WriteLine($"To: {recipient.EmailAddress}");
foreach (var attachment in message.Attachments)
    Console.WriteLine($"Attachment: {attachment.Filename} ({attachment.MimeType})");

サポートされているフォーマット

フォーマット拡張子読み取り書き込み
Compound File Binary.cfb
Outlook Message.msg
MIME / EML.eml

オープンソースとライセンス

Aspose.Email FOSS for .NET は MIT ライセンス の下でリリースされています。個人、商用、オープンソース プロジェクトで使用制限なく自由に使用できます。ソースコードは
github.com/aspose-email-foss/Aspose.Email-FOSS-for-.Net で入手可能です。


はじめに