Aspose.Email FOSS for C++ は、MIT ライセンスのオープンソース C++ ライブラリで、Microsoft Outlook .msg ファイルと Compound File Binary (CFB) コンテナを扱うことができます。CMake でヘッダーをインクルードすれば、Microsoft Outlook や任意のプロプライエタリ ランタイムをインストールせずに、すぐにメールメッセージの読み取り、作成、処理を開始できます。
このライブラリは2つのレベルのアクセスを提供します。
低レベルでは、cfb_reader と cfb_writer が CFB バイナリコンテナに対する完全な制御を提供し、ディレクトリエントリの走査、ストレージノードとストリームデータの読み書き、そして生のセクタレイアウトの検査が可能です。msg_reader と msg_writer は CFB 上の MSG フォーマットを処理し、MAPI プロパティストリーム、受信者テーブル、添付サブストレージを公開します。
高レベルでは、mapi_message を使用して新しいメッセージをゼロから作成し、件名、本文、受信者、添付ファイルを読み取り、MSG と EML フォーマット間の変換が可能です。
このライブラリは C++17 コンパイラがあれば任意のプラットフォームで構築でき、外部依存関係がないため、Windows、Linux、macOS、Docker コンテナ、組み込みシステムに適しています。
追加機能を備えたエンタープライズエディションは Aspose.Email for C++ として提供されます。
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_document を使用してプログラムで CFB ドキュメントを作成し、cfb_writer::to_bytes() または cfb_writer::write_file() を介してバイト列またはファイルにシリアライズします。.msg ファイルのコンテナ形式です — 直接 CFB にアクセスすることで、フォレンジック検査と修復が可能になります。msg_reader::from_file() または msg_reader::from_stream() を使用して Outlook の MSG ファイルを開き、基礎となる MAPI プロパティ ストリームと添付ファイルのサブストレージにアクセスします。msg_document から msg_writer::to_bytes() または msg_writer::write_file() を使用して MSG ファイルを生成します。msg_document::major_version()、msg_document::minor_version() を介してアクセスし、msg_document::strict() で厳密さを確認します。msg_document::to_cfb_document() を使用して抽出します。.msg ファイルを一括読み取り、メタデータまたは添付ファイルを抽出します。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()で再読み込みします。.eml ファイル (RFC 5322 / MIME) を mapi_message::load_from_eml() を介して完全な mapi_message オブジェクトに解析します。mapi_message を save_to_eml() を使用して MIME 形式にシリアライズします。.eml と .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 と 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);
}