Introduksjon

Å jobbe med Outlook MSG-filer i C++ har historisk sett krevd Windows‑spesifikk COM‑automatisering
eller tunge tredjepartsbiblioteker med restriktive lisenser. Aspose.Email FOSS for C++
endrer dette: det er et rent C++17‑bibliotek uten eksterne avhengigheter, ingen COM, og ingen
plattformspesifikk kode. Det bygges identisk på Linux, macOS og Windows.

Biblioteket er utgitt under MIT‑lisensen og distribuert som kildekode via GitHub. Du integrerer det ved å klone depotet og legge det til som en CMake‑underkatalog — ingen registrering i pakkehåndterer er nødvendig, og ingen binærfiler trenger å forhåndsbygges.

Dette innlegget går gjennom hovedarbeidsflyten: lese en eksisterende MSG‑fil, inspisere egenskapene, opprette en ny melding programmatisk, og runde‑trippe mellom MSG‑ og EML‑formater.


Nøkkelfunksjoner

Les eksisterende MSG-filer

Bruk msg_reader for å åpne en .msg‑fil og msg_document for å få tilgang til dens strukturerte innhold.
Begge klassene befinner seg i aspose::email::foss::msg‑navnerommet.

#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 har også en from_stream overbelastning for lesing fra en std::istream, som er nyttig i server‑side eller pipeline‑kontekster hvor filer ikke er tilstede på disk.

Opprett meldinger programmatisk

mapi_message::create produserer en ny melding i minnet med et emne og en brødtekst. Du kan deretter angi avsenderdetaljer, legge til mottakere og legge ved binære eller tekstbaserte nyttelaster før du lagrer.

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

Konverter MSG til EML

mapi_message støtter direkte MSG-til-EML-konvertering gjennom save_to_eml-metoden.
EML-utdata følger RFC 5322 (MIME), noe som gjør den kompatibel med enhver standard e‑post
klient eller behandlingspipeline.

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

Last inn fra EML

Den omvendte retningen er like enkel: load_from_eml leser en EML‑fil og produserer en mapi_message i minnet, som deretter kan lagres tilbake til MSG.

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

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

Lavnivå CFB-tilgang

For avanserte brukstilfeller — som å lese rå MAPI‑egenskaper som ikke er eksponert av høy‑nivå‑API‑et — cfb_reader gir direkte tilgang til Compound File Binary‑containeren som ligger til grunn for MSG‑formatet.

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

Rask start

Trinn 1 — Klon og legg til som undermappe

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

I ditt prosjekt 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)

Steg 2 — Inkluder og bruk

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

Steg 3 — Bygg

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

Støttede formater

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

Open Source og lisensiering

Aspose.Email FOSS for C++ er utgitt under MIT‑lisensen. Den fullstendige kildekoden er tilgjengelig
på GitHub på aspose-email-foss/Aspose.Email-FOSS-for-Cpp.
Kommersiell bruk er tillatt uten royalties. Biblioteket har ingen kjøretidsavhengigheter
utover en C++17‑kompilator og CMake 3.26 eller nyere.


Kom i gang