Aspose.Email FOSS for C++ là một thư viện C++ mã nguồn mở, được cấp phép MIT, dùng để làm việc với các tệp .msg của Microsoft Outlook và các container Compound File Binary (CFB). Bao gồm các tiêu đề thông qua CMake và ngay lập tức bắt đầu đọc, tạo và xử lý các tin nhắn email mà không cần cài đặt Microsoft Outlook hay bất kỳ môi trường chạy độc quyền nào.
Thư viện cung cấp hai cấp độ truy cập. Ở mức thấp, cfb_reader và cfb_writer cho phép kiểm soát đầy đủ các container nhị phân CFB — duyệt các mục thư mục, đọc và ghi các nút lưu trữ và dữ liệu luồng, và kiểm tra bố trí sector thô. msg_reader và msg_writer xử lý định dạng MSG trên nền CFB, tiết lộ các luồng thuộc tính MAPI, bảng người nhận và các sub‑storage đính kèm. Ở mức cao, mapi_message cho phép bạn tạo tin nhắn mới từ đầu, đọc tiêu đề, nội dung, người nhận và tệp đính kèm, và chuyển đổi giữa định dạng MSG và EML.
Thư viện có thể biên dịch trên bất kỳ nền tảng nào có trình biên dịch C++17 và không có phụ thuộc bên ngoài, khiến nó phù hợp cho Windows, Linux, macOS, các container Docker và hệ thống nhúng.
cfb_reader::from_file(), cfb_reader::from_stream(), or cfb_reader::from_bytes().storage_ids(), stream_ids(), and child_ids(), and navigate nested hierarchies with resolve_path().cfb_node::is_storage() and cfb_node::is_stream(), read timestamps via creation_time() and modified_time().cfb_document and serialize to bytes or file via cfb_writer::to_bytes() or cfb_writer::write_file()..msg files — direct CFB access enables forensic inspection and repair.msg_reader::from_file() or msg_reader::from_stream() and access the underlying MAPI property streams and attachment sub-storages.msg_document with msg_writer::to_bytes() or msg_writer::write_file().msg_document::major_version(), msg_document::minor_version(), and check strictness with msg_document::strict().msg_document::to_cfb_document()..msg files from archive directories and extract metadata or attachments.mapi_message::create(), then set subject, body, and HTML body via set_subject(), set_body(), and set_html_body().set_sender_name(), set_sender_email_address(), and set_sender_address_type() for the outgoing message.mapi_attachment::from_bytes() and mapi_attachment::from_stream(), and check for embedded messages via is_embedded_message().mapi_message::save() and reload with mapi_message::from_file() or mapi_message::from_stream()..eml file (RFC 5322 / MIME) into a full mapi_message object via mapi_message::load_from_eml().mapi_message back to MIME format with save_to_eml()..eml and .msg files to a single format.Open an Outlook MSG file from a stream and print the subject — no Microsoft Outlook required.
#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';
}
Build a complete email with sender, recipient, and attachment, then write it to both MSG and EML formats.
#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);
}