Introducere

Lucrul cu fișiere Outlook MSG în C++ a necesitat istoric automatizare COM doar pe Windows
sau biblioteci terțe grele cu licențe restrictive. Aspose.Email FOSS pentru C++
schimbă asta: este o bibliotecă pură C++17 fără dependențe externe, fără COM și fără
cod specific platformei. Se compilează identic pe Linux, macOS și Windows.

Biblioteca este lansată sub licența MIT și distribuită ca sursă prin GitHub. Tu o integrezi prin clonarea depozitului și adăugarea lui ca subdirector CMake — nu este necesară înregistrarea la managerul de pachete, și nu este nevoie să se pre-construiască binarele.

Acest articol parcurge fluxul de lucru de bază: citirea unui fișier MSG existent, inspectarea proprietăților sale, crearea unui mesaj nou programatic și conversia bidirecțională între formatele MSG și EML.


Caracteristici principale

Citește fișiere MSG existente

Utilizați msg_reader pentru a deschide un fișier .msg și msg_document pentru a accesa conținutul său structurat.
Ambele clase se află în spațiul de nume 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 are, de asemenea, o suprasarcină from_stream pentru citirea dintr-un std::istream, care este utilă în contexte server-side sau de pipeline în care fișierele nu sunt prezente pe disc.

Creează Mesaje Programatic

mapi_message::create creează un nou mesaj în memorie cu un subiect și un corp. Apoi puteți seta detaliile expeditorului, adăuga destinatari și atașa încărcături binare sau textuale înainte de a salva.

#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"));

Convertiți MSG în EML

mapi_message suportă conversia directă MSG‑în‑EML prin metoda save_to_eml.
Ieșirea EML respectă RFC 5322 (MIME), făcând-o compatibilă cu orice client de mail standard
sau cu orice lanț de procesare.

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();

Încărcare din EML

Direcția inversă este la fel de simplă: load_from_eml citește un fișier EML și produce un mapi_message în memorie, care poate fi apoi salvat înapoi în MSG.

auto from_eml = aef::msg::mapi_message::load_from_eml(
    std::filesystem::path("message.eml"));

from_eml.save(std::filesystem::path("restored.msg"));

Acces la nivel scăzut CFB

Pentru cazuri de utilizare avansate — cum ar fi citirea proprietăților MAPI brute care nu sunt expuse de API-ul de nivel înalt — cfb_reader oferă acces direct la containerul Compound File Binary care stă la baza formatului 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();

Pornire rapidă

Pasul 1 — Clonează și adaugă ca subdirector

git clone https://github.com/aspose-email-foss/Aspose.Email-FOSS-for-Cpp.git

În proiectul tău 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)

Pasul 2 — Include și Folosește

#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";
}

Pasul 3 — Construire

cmake -B build -DCMAKE_BUILD_TYPE=Release
cmake --build build

Formate acceptate

FormatExtensieCitireScriere
MSG (Outlook Message).msg
EML (RFC 5322 / MIME).eml
CFB (Compound File Binary).msg, .cfb

Open Source și Licențiere

Aspose.Email FOSS pentru C++ este lansat sub licența MIT. Codul sursă complet este disponibil
pe GitHub la aspose-email-foss/Aspose.Email-FOSS-for-Cpp.
Utilizarea comercială este permisă fără redevențe. Biblioteca nu are dependențe la runtime
în afara unui compilator C++17 și CMake 3.26 sau ulterior.


Începeți