1. 製品
  2.   Aspose.Email
  3.   Aspose.Email FOSS for C++

Aspose.Email FOSS - Aspose.Email C++ 用 FOSS

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

MSG と CFB ファイル用のオープンソース C++ ライブラリ

Aspose.Email FOSS for C++ は、MIT ライセンスのオープンソース C++ ライブラリで、Microsoft Outlook .msg ファイルと Compound File Binary (CFB) コンテナを扱うことができます。CMake でヘッダーをインクルードすれば、Microsoft Outlook や任意のプロプライエタリ ランタイムをインストールせずに、すぐにメールメッセージの読み取り、作成、処理を開始できます。

このライブラリは2つのレベルのアクセスを提供します。
低レベルでは、cfb_readercfb_writer が CFB バイナリコンテナに対する完全な制御を提供し、ディレクトリエントリの走査、ストレージノードとストリームデータの読み書き、そして生のセクタレイアウトの検査が可能です。
msg_readermsg_writer は CFB 上の MSG フォーマットを処理し、MAPI プロパティストリーム、受信者テーブル、添付サブストレージを公開します。
高レベルでは、mapi_message を使用して新しいメッセージをゼロから作成し、件名、本文、受信者、添付ファイルを読み取り、MSG と EML フォーマット間の変換が可能です。 このライブラリは C++17 コンパイラがあれば任意のプラットフォームで構築でき、外部依存関係がないため、Windows、Linux、macOS、Docker コンテナ、組み込みシステムに適しています。 追加機能を備えたエンタープライズエディションは Aspose.Email for C++ として提供されます。

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

  • Open CFB files: 既存のCFBコンテナをファイルパス、ストリーム、またはバイト配列から cfb_reader::from_file()cfb_reader::from_stream()、または cfb_reader::from_bytes() を使用してロードします。
  • ディレクトリツリーをたどる: storage_ids()stream_ids()child_ids() を使用してストレージとストリームを列挙し、resolve_path() でネストされた階層をナビゲートします。
  • ノードを検査: ノードタイプは cfb_node::is_storage()cfb_node::is_stream() で確認し、タイムスタンプは creation_time()modified_time() で取得します。
  • CFB コンテナの作成: cfb_document を使用してプログラムで CFB ドキュメントを作成し、cfb_writer::to_bytes() または cfb_writer::write_file() を介してバイト列またはファイルにシリアライズします。

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

  • MSG file inspection: CFB は Outlook .msg ファイルのコンテナ形式です — 直接 CFB にアクセスすることで、フォレンジック検査と修復が可能になります。
  • カスタムバイナリ形式: データ保存にCFBを使用しているレガシーアプリケーションは、COM依存なしで読み書きできます。
  • データ復旧: フルディレクトリツリーを走査し、損傷したまたは非標準のCFBファイルから生のストリームバイトを抽出します。

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

  • MSG ファイルの読み取り: msg_reader::from_file() または msg_reader::from_stream() を使用して Outlook の MSG ファイルを開き、基礎となる MAPI プロパティ ストリームと添付ファイルのサブストレージにアクセスします。
  • MSG ファイルを書き込む: msg_document から msg_writer::to_bytes() または msg_writer::write_file() を使用して MSG ファイルを生成します。
  • MSG document inspection: バージョンメタデータに msg_document::major_version()msg_document::minor_version() を介してアクセスし、msg_document::strict() で厳密さを確認します。
  • CFB に変換: MSG ファイルから基になる CFB ドキュメントを msg_document::to_cfb_document() を使用して抽出します。

MSG 処理が使用される場所

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

ハイレベル MAPI メッセージ API

  • メッセージを作成: mapi_message::create() を使用して完全なメールを作成し、次に set_subject()set_body()set_html_body() を使用して件名、本文、および HTML 本文を設定します。
  • 送信者の詳細を設定: 発信メッセージのために set_sender_name()set_sender_email_address()、および set_sender_address_type() を構成します。
  • 添付ファイルの管理: バイトまたはストリームから添付ファイルを mapi_attachment::from_bytes()mapi_attachment::from_stream() でロードし、is_embedded_message() を使用して埋め込みメッセージを確認します。
  • 保存と再読み込み: mapi_message::save()でシリアライズし、mapi_message::from_file()またはmapi_message::from_stream()で再読み込みします。

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

  • 自動メール生成: データレコードからバッチジョブで数千のパーソナライズされたMSGファイルを生成します。
  • テストフィクスチャの作成: 統合テストスイート用に、予測可能な内容を持つ既知の良好な MSG ファイルを構築します。
  • 添付ファイルの抽出: MSG ファイルをロードし、添付ファイルを反復処理し、各ファイルをディスクに保存します。

EML と MIME の変換

  • EML を mapi_message にロード: 標準的な .eml ファイル (RFC 5322 / MIME) を mapi_message::load_from_eml() を介して完全な mapi_message オブジェクトに解析します。
  • mapi_message を EML として保存: mapi_messagesave_to_eml() を使用して MIME 形式にシリアライズします。
  • 往復忠実度: 件名、本文、送信者、受信者、および添付ファイルは、EML から MSG へ、そして再び EML への往復変換でも保持されます。

EML 変換が使用される場所

  • Format bridging: メールサーバーから EML としてメールを受信し、Outlook 互換のストレージ用に MSG に変換します。
  • 標準準拠: プロプライエタリな MSG ファイルを標準 MIME に変換し、任意のメールトランスポートへ配信します。
  • アーカイブ正規化: 混合アーカイブの .eml.msg ファイルを単一の形式に正規化します。

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

ストリームから Outlook MSG ファイルを開き、件名を表示します — Microsoft Outlook は不要です。

#include <fstream>
#include <iostream>

#include "aspose/email/foss/msg/mapi_message.hpp"

int main()
{
    std::ifstream input("sample.msg", std::ios::binary);
    auto message = aspose::email::foss::msg::mapi_message::from_stream(input);
    std::cout << message.subject() << '\n';
}

MSG メッセージを作成して保存する

送信者、受信者、添付ファイルを含む完全なメールを作成し、MSG と EML の両方の形式で書き出します。

#include <fstream>

#include "aspose/email/foss/msg/mapi_message.hpp"

int main()
{
    auto message = aspose::email::foss::msg::mapi_message::create("Hello", "Body");
    message.set_sender_name("Alice");
    message.set_sender_email_address("alice@example.com");
    message.add_recipient("bob@example.com", "Bob");
    message.add_attachment("note.txt", std::vector<std::uint8_t>{'a', 'b', 'c'}, "text/plain");

    std::ofstream msg_output("hello.msg", std::ios::binary);
    message.save(msg_output);

    std::ofstream eml_output("hello.eml", std::ios::binary);
    message.save_to_eml(eml_output);
}
  

サポートと学習リソース

 日本語