מבוא
עבודה עם קבצי Outlook MSG ב‑C++ דרשה בעבר אוטומציה של COM רק ב‑Windows
או ספריות צד שלישי כבדות עם רישיונות מגבילים. Aspose.Email FOSS for C++
משנה זאת: היא ספרייה טהורה ב‑C++17 ללא תלות חיצונית, ללא COM, וללא
קוד ספציפי לפלטפורמה. היא נבנית באופן זהה ב‑Linux, macOS וב‑Windows.
הספרייה משוחררת תחת רישיון MIT ומופצת כמקור דרך GitHub. אתה משלב אותה על‑ידי שכפול המאגר והוספתו כתת‑ספרייה של CMake — אין צורך ברישום למנהל חבילות, ואין צורך לבנות קבצים בינאריים מראש.
פוסט זה מסביר את זרימת העבודה המרכזית: קריאת קובץ MSG קיים, בדיקת המאפיינים שלו, יצירת הודעה חדשה בתכנות, והמרה חוזרת בין פורמטים MSG ו‑EML.
תכונות מרכזיות
קריאת קבצי MSG קיימים
השתמש בmsg_reader כדי לפתוח קובץ .msg וmsg_document כדי לגשת לתוכן המובנה שלו.
שתי המחלקות נמצאות במרחב השמות aspose::email::foss::msg.
#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 גם כולל overload של from_stream לקריאה מstd::istream,
שזה שימושי בצד השרת או בתרחישי pipeline שבהם הקבצים אינם קיימים על הדיסק.
צור הודעות באופן תכנותי
mapi_message::create מייצר הודעה חדשה בזיכרון עם נושא וגוף.
אתה יכול אז להגדיר פרטי השולח, להוסיף נמענים ולצרף מטענים בינריים או טקסט לפני השמירה.
#include "aspose/email/foss/msg/mapi_message.hpp"
namespace aef = aspose::email::foss;
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"));
המר MSG ל-EML
mapi_message תומך בהמרה ישירה מ‑MSG ל‑EML דרך השיטה save_to_eml.
פלט ה‑EML תואם ל‑RFC 5322 (MIME), מה שהופך אותו לתואם עם כל לקוח דואר סטנדרטי
או צינור עיבוד.
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();
טעינה מ‑EML
הכיוון ההפוך הוא גם הוא פשוט באותה מידה: load_from_eml קורא קובץ EML ומייצר mapi_message בזיכרון, שניתן לאחר מכן לשמור חזרה ל‑MSG.
auto from_eml = aef::msg::mapi_message::load_from_eml(
std::filesystem::path("message.eml"));
from_eml.save(std::filesystem::path("restored.msg"));
גישה ברמת נמוכה ל‑CFB
למקרים מתקדמים — כגון קריאת מאפייני MAPI גולמיים שלא נחשפים על‑ידי ה‑API ברמה גבוהה — cfb_reader מספק גישה ישירה למכולת Compound File Binary שמבססת את פורמט MSG.
#include "aspose/email/foss/cfb/cfb_reader.hpp"
namespace aef = aspose::email::foss;
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();
התחלה מהירה
שלב 1 — שכפול והוספה כתת‑ספרייה
git clone https://github.com/aspose-email-foss/Aspose.Email-FOSS-for-Cpp.git
בפרויקט שלך 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)
שלב 2 — כלול והשתמש
#include <iostream>
#include "aspose/email/foss/msg/mapi_message.hpp"
namespace aef = aspose::email::foss;
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";
}
שלב 3 — בנייה
cmake -B build -DCMAKE_BUILD_TYPE=Release
cmake --build build
פורמטים נתמכים
| פורמט | סיומת | קריאה | כתיבה |
|---|---|---|---|
| MSG (הודעת Outlook) | .msg | ✓ | ✓ |
| EML (RFC 5322 / MIME) | .eml | ✓ | ✓ |
| CFB (קובץ בינארי מורכב) | .msg, .cfb | ✓ | ✓ |
קוד פתוח ורישוי
Aspose.Email FOSS for C++ משוחרר תחת רישיון MIT. הקוד המלא זמין ב‑GitHub בכתובת aspose-email-foss/Aspose.Email-FOSS-for-Cpp. שימוש מסחרי מותר ללא תמלוגים. הספרייה אינה תלויה בזמן ריצה מעבר למקמפל C++17 ו‑CMake 3.26 או גרסה מאוחרת יותר.