Úvod
Práca s Outlook MSG súbormi v C++ historicky vyžadovala len Windows‑only COM automatizáciu
alebo ťažké knižnice tretích strán s obmedzujúcimi licenciami. Aspose.Email FOSS pre C++
mení to: je to čistá knižnica C++17 bez externých závislostí, bez COM, a bez
kódu špecifického pre platformu. Stavia sa identicky na Linuxe, macOS a Windows.
Knižnica je vydaná pod licenciou MIT a distribuovaná ako zdrojový kód prostredníctvom GitHubu. Vy integrujete ju klonovaním repozitára a pridaním ako podadresár CMake — nie je potrebná registrácia správcu balíkov a nie je potrebné predkompilovať binárky.
Tento príspevok prechádza základným pracovným tokom: čítanie existujúceho súboru MSG, kontrolu jeho vlastností, programové vytvorenie novej správy a obojsmernú konverziu medzi formátmi MSG a EML.
Kľúčové vlastnosti
Čítať existujúce MSG súbory
Použite msg_reader na otvorenie súboru .msg a msg_document na prístup k jeho štruktúrovanému obsahu.
Obe triedy sa nachádzajú v mennom priestore 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 má tiež preťaženie from_stream na čítanie z std::istream, čo je užitočné v server‑side alebo pipeline kontextoch, kde sú súbory neprítomné na disku.
Vytváranie správ programaticky
mapi_message::create vytvára novú správu v pamäti s predmetom a telom. Potom môžete nastaviť údaje odosielateľa, pridať príjemcov a pripojiť binárne alebo textové dáta pred uložením.
#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"));
Previesť MSG na EML
mapi_message podporuje priamu konverziu MSG na EML pomocou metódy save_to_eml.
Výstup EML spĺňa špecifikáciu RFC 5322 (MIME), čo ho robí kompatibilným s akýmkoľvek štandardným poštovým
klientom alebo spracovateľským reťazcom.
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();
Načítať z EML
Obratný smer je rovnako jednoduchý: load_from_eml načíta súbor EML a vytvorí mapi_message v pamäti, ktorý potom možno uložiť späť do MSG.
auto from_eml = aef::msg::mapi_message::load_from_eml(
std::filesystem::path("message.eml"));
from_eml.save(std::filesystem::path("restored.msg"));
Nízkoúrovňový prístup k CFB
Pre pokročilé prípady použitia — napríklad čítanie surových MAPI vlastností, ktoré nie sú vystavené vysokourovňovým API — cfb_reader poskytuje priamy prístup k kontajneru Compound File Binary, ktorý tvorí základ formátu 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();
Rýchly štart
Krok 1 — Klonovať a pridať ako podadresár
git clone https://github.com/aspose-email-foss/Aspose.Email-FOSS-for-Cpp.git
V projekte 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)
Krok 2 — Zahrnúť a použiť
#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";
}
Krok 3 — Zostaviť
cmake -B build -DCMAKE_BUILD_TYPE=Release
cmake --build build
Podporované formáty
| Formát | Prípona | Čítať | Zapísať |
|---|---|---|---|
| MSG (Outlook Message) | .msg | ✓ | ✓ |
| EML (RFC 5322 / MIME) | .eml | ✓ | ✓ |
| CFB (Compound File Binary) | .msg, .cfb | ✓ | ✓ |
Open Source a licencovanie
Aspose.Email FOSS pre C++ je vydaný pod licenciou MIT. Plný zdroj je dostupný
na GitHub-e na adrese aspose-email-foss/Aspose.Email-FOSS-for-Cpp.
Komerčné použitie je povolené bez poplatkov. Knižnica nemá žiadne runtime závislosti
okrem kompilátora C++17 a CMake 3.26 alebo novšieho.