Introduction
Làm việc với Outlook MSG tệp trong C++ đã lịch sử yêu cầu Windows-chỉ COM tự động hóa hoặc trọng lượng thư viện bên thứ ba với giấy phép hạn chế. Aspose.Email FOSS cho C ++ thay đổi rằng: nó là một thư ký C + + 17 tinh khiết mà không có phụ thuộc bên ngoài, không COM, và không mã cụ thể nền tảng. Nó xây dựng giống nhau trên Linux, macOS, and Windows.
Thư viện được phát hành theo giấy phép MIT và phân phối như nguồn thông qua GitHub. Bạn tích hợp nó bằng cách nhãn lại kho lưu trữ và thêm nó là một thư mục phụ của CMake - không cần đăng ký quản lý gói, và không có binary cần phải được xây dựng trước.
Bài viết này đi qua dòng công việc cốt lõi: đọc một tệp MSG hiện có, kiểm tra các thuộc tính của nó, tạo ra một thông điệp mới theo lập trình và vòng tròn giữa định dạng MSM và EML.
Các tính năng chính
Đọc các tập tin MSG hiện có
Sử dụng msg_reader để mở a .msg file và msg_document để truy cập nội dung cấu trúc của nó. Cả hai lớp đều sống trong aspose::email::foss::msg Tên miền.
#include "aspose/email/foss/msg/msg_reader.hpp"
#include "aspose/email/foss/msg/msg_document.hpp"
#include <filesystem>
namespace aef = aspose::email::foss;
auto reader = aef::msg::msg_reader::from_file(std::filesystem::path("message.msg"));
auto document = aef::msg::msg_document::from_reader(reader);
msg_reader cũng có một from_stream Đọc quá tải từ một std::istream, có lợi trong các bối cảnh bên máy chủ hoặc đường ống nơi tệp không hiện diện trên đĩa.
Tạo tin nhắn theo lập trình
mapi_message::create tạo ra một tin nhắn mới trong trí nhớ với chủ đề và cơ thể. sau đó có thể đặt các chi tiết gửi, thêm người nhận và gắn tải thanh toán nhị phân hoặc văn bản trước khi tiết kiệm .
#include "aspose/email/foss/msg/mapi_message.hpp"
auto msg = aef::msg::mapi_message::create(
"Quarterly status update",
"Hello team,\n\nPlease find the rollout summary attached.\n\nRegards");
msg.set_sender_name("Build Agent");
msg.set_sender_email_address("build.agent@example.com");
msg.add_recipient("alice@example.com", "Alice Example");
msg.save(std::filesystem::path("output.msg"));
Chuyển đổi MSG sang EML
mapi_message hỗ trợ chuyển đổi trực tiếp MSG-to-EML thông qua save_to_eml Phương pháp . EML kết hợp với RFC 5322 (MIME), làm cho nó tương thích với bất kỳ thư tiêu chuẩn nào. khách hàng hoặc đường ống chế.
auto loaded = aef::msg::mapi_message::from_file(
std::filesystem::path("message.msg"), /*strict=*/false);
// Save as EML to a file
loaded.save_to_eml(std::filesystem::path("message.eml"));
// Or capture as bytes
std::vector<std::uint8_t> eml_bytes = loaded.save_to_eml();
tải về EML
Hướng ngược cũng đơn giản: load_from_eml Đọc một tập tin EML và sản xuất a mapi_message trong bộ nhớ, sau đó có thể được lưu lại MSG.
auto from_eml = aef::msg::mapi_message::load_from_eml(
std::filesystem::path("message.eml"));
from_eml.save(std::filesystem::path("restored.msg"));
Truy cập CFB mức thấp
Đối với các trường hợp sử dụng tiên tiến — chẳng hạn như đọc nguyên MAPI thuộc tính không được tiếp xúc bởi - Tốc độ cao API – cfb_reader cung cấp quyền truy cập trực tiếp vào container tập tin binary Điều này làm rõ định dạng MSG.
#include "aspose/email/foss/cfb/cfb_reader.hpp"
auto cfb = aef::cfb::cfb_reader::from_file(std::filesystem::path("message.msg"));
auto storage_ids = cfb.storage_ids();
auto stream_ids = cfb.stream_ids();
Khởi động nhanh
Bước 1 - Clone và Add as Subdirectory
git clone https://github.com/aspose-email-foss/Aspose.Email-FOSS-for-Cpp.git
Trong dự án của bạn CMakeLists.txt:
cmake_minimum_required(VERSION 3.26)
project(my_project)
add_subdirectory(Aspose.Email-FOSS-for-Cpp)
add_executable(my_app main.cpp)
target_link_libraries(my_app PRIVATE AsposeEmailFoss::AsposeEmailFoss)
Bước 2 - Tham gia và sử dụng
#include <iostream>
#include "aspose/email/foss/msg/mapi_message.hpp"
int main()
{
// Create a message
auto msg = aef::msg::mapi_message::create("Hello from C++", "Body text here");
msg.save(std::filesystem::path("hello.msg"));
// Round-trip to EML
auto loaded = aef::msg::mapi_message::from_file(
std::filesystem::path("hello.msg"), false);
loaded.save_to_eml(std::filesystem::path("hello.eml"));
std::cout << "Done\n";
}
Bước 3 - Xây dựng
cmake -B build -DCMAKE_BUILD_TYPE=Release
cmake --build build
Các định dạng hỗ trợ
| Format | Extension | Read | Write |
|---|---|---|---|
| MSM (Outlook Message) – Thông điệp Outlook | .msg | ✓ | ✓ |
| EML (RFC 5322 / MIME) | .eml | ✓ | ✓ |
| CFB (Compound File Binary) - Tập tin kết hợp | .msg, .cfb | ✓ | ✓ |
Open Source & Giấy phép
Aspose.Email FOSS for C++ is released under the MIT license. The full source is available GitHub tại email-phoss/Aspose.Email-FOSS-for-Cpp. Sử dụng thương mại được phép mà không có tiền mã hóa. Thư viện không sở hữu thời gian làm việc phụ thuộc - Tăng hơn một máy tính C++17 và CMake 3.26 hoặc cao hơn.