1. Sản Phẩm
  2.   Aspose.Email
  3.   Aspose.Email FOSS for C++

Aspose.Email FOSS cho C++

Đọc, tạo và xử lý các tệp Outlook MSG và container CFB từ C++ — miễn phí và mã nguồn mở, không phụ thuộc vào Microsoft Outlook.

Thư viện C++ mã nguồn mở cho các tệp MSG và CFB

Aspose.Email FOSS cho 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 Microsoft Outlook .msg 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 hoặc 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_readercfb_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ố cục sector thô. msg_readermsg_writer xử lý định dạng MSG trê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 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. Một phiên bản doanh nghiệp với các tính năng bổ sung được cung cấp dưới dạng Aspose.Email for C++.

Đọc và ghi Container CFB

  • Open CFB files: Tải các container CFB hiện có từ đường dẫn tệp, luồng hoặc mảng byte thông qua cfb_reader::from_file(), cfb_reader::from_stream() hoặc cfb_reader::from_bytes().
  • Duyệt cây thư mục: Liệt kê các storage và stream bằng cách sử dụng storage_ids(), stream_ids(), và child_ids(), và điều hướng các phân cấp lồng nhau với resolve_path().
  • Inspect nodes: Kiểm tra loại nút với cfb_node::is_storage()cfb_node::is_stream(), đọc dấu thời gian qua creation_time()modified_time().
  • Write CFB containers: Xây dựng tài liệu CFB một cách lập trình với cfb_document và tuần tự hoá thành byte hoặc tệp qua cfb_writer::to_bytes() hoặc cfb_writer::write_file().

Nơi Sử Dụng Truy Cập CFB

  • Kiểm tra tệp MSG: CFB là định dạng container cho các tệp Outlook .msg — truy cập CFB trực tiếp cho phép kiểm tra pháp y và sửa chữa.
  • Custom binary formats: Bất kỳ ứng dụng legacy nào sử dụng CFB để lưu trữ dữ liệu đều có thể được đọc hoặc ghi mà không cần phụ thuộc vào COM.
  • Khôi phục dữ liệu: Duyệt toàn bộ cây thư mục và trích xuất các byte luồng thô từ các tệp CFB bị hỏng hoặc không tiêu chuẩn.

Đọc và ghi Tệp MSG

  • Đọc tệp MSG: Mở các tệp Outlook MSG bằng msg_reader::from_file() hoặc msg_reader::from_stream() và truy cập các luồng thuộc tính MAPI và các sub‑storage đính kèm.
  • Viết tệp MSG: Tạo tệp MSG từ một msg_document với msg_writer::to_bytes() hoặc msg_writer::write_file().
  • Kiểm tra tài liệu MSG: Truy cập siêu dữ liệu phiên bản qua msg_document::major_version(), msg_document::minor_version(), và kiểm tra mức độ nghiêm ngặt với msg_document::strict().
  • Convert to CFB: Trích xuất tài liệu CFB cơ bản từ tệp MSG thông qua msg_document::to_cfb_document().

Nơi Xử Lý MSG Được Sử Dụng

  • Email archival pipelines: Đọc hàng loạt các tệp .msg từ các thư mục lưu trữ và trích xuất siêu dữ liệu hoặc tệp đính kèm.
  • Công cụ di chuyển: Chuyển đổi các bộ sưu tập MSG sang các định dạng tiêu chuẩn để nhập vào các hệ thống không phải Outlook.
  • Khám phá pháp lý: Phân tích luồng thuộc tính MAPI thô để trích xuất tất cả các trường tin nhắn bao gồm các thuộc tính không chuẩn.

API Tin Nhắn MAPI Cấp Cao

  • Tạo tin nhắn: Xây dựng một email hoàn chỉnh với mapi_message::create(), sau đó đặt tiêu đề, nội dung và HTML nội dung qua set_subject(), set_body()set_html_body().
  • Cài đặt chi tiết người gửi: Cấu hình set_sender_name(), set_sender_email_address()set_sender_address_type() cho tin nhắn gửi đi.
  • Quản lý tệp đính kèm: Tải tệp đính kèm từ byte hoặc luồng bằng mapi_attachment::from_bytes()mapi_attachment::from_stream(), và kiểm tra các tin nhắn nhúng qua is_embedded_message().
  • Lưu và tải lại: Serialize với mapi_message::save() và tải lại với mapi_message::from_file() hoặc mapi_message::from_stream().

Nơi API Cấp Cao Được Sử Dụng

  • Tự động tạo email: Tạo hàng ngàn tệp MSG cá nhân hoá từ các bản ghi dữ liệu trong các công việc batch.
  • Tạo fixture kiểm thử: Xây dựng các tệp MSG đã biết tốt với nội dung dự đoán được cho các bộ kiểm thử tích hợp.
  • Trích xuất tệp đính kèm: Tải tệp MSG, lặp qua các tệp đính kèm và lưu mỗi tệp vào đĩa.

Chuyển Đổi EML và MIME

  • Load EML into mapi_message: Phân tích một tệp .eml tiêu chuẩn (RFC 5322 / MIME) thành một đối tượng mapi_message đầy đủ thông qua mapi_message::load_from_eml().
  • Lưu mapi_message dưới dạng EML: Serialize một mapi_message trở lại định dạng MIME với save_to_eml().
  • Round-trip fidelity: Chủ đề, nội dung, người gửi, người nhận và tệp đính kèm được bảo toàn qua các vòng chuyển đổi EML sang MSG sang EML.

Nơi Chuyển Đổi EML Được Sử Dụng

  • Kết nối định dạng: Nhận email dưới dạng EML từ máy chủ thư và chuyển đổi sang MSG để lưu trữ tương thích với Outlook.
  • Tuân thủ tiêu chuẩn: Chuyển đổi các tệp MSG độc quyền sang MIME tiêu chuẩn để gửi đến bất kỳ hệ thống truyền thư nào.
  • Chuẩn hoá lưu trữ: Chuẩn hoá một kho lưu trữ hỗn hợp của các tệp .eml.msg thành một định dạng duy nhất.

Đọc Chủ Đề Từ Tệp MSG

Mở tệp Outlook MSG từ một luồng và in tiêu đề — không cần 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';
}

Tạo và Lưu Tin Nhắn MSG

Tạo một email hoàn chỉnh với người gửi, người nhận và tệp đính kèm, sau đó ghi nó ra cả định dạng MSG và 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);
}
  

Tài Nguyên Hỗ Trợ và Học Tập

 Tiếng Việt