Indledning

Arbejde med Outlook MSG-filer i C++ har historisk set krævet Windows-only COM automation eller tungtvægtige tredjepartsbiblioteker med restriktive licenser. Aspose.Email FOSS for C ++ ændrer det: Det er et rent C + 17 bibliotek uden eksterne afhængigheder, ingen COM og ingen platformspecifik kode. Det bygger identisk på Linux, macOS og Windows.

Biblioteket er udgivet under MIT-licensen og distribueret som kilde via GitHub. Du integrerer det ved at klone repository og tilføje det som en CMake subdirectory ingen pakkemanager registrering kræves, og ingen binære filer behøver at være forudbygget.

Denne artikel går gennem kernearbejdsstrømmen: læsning af en eksisterende MSG-fil, inspektion af dens egenskaber, oprettelse af et nyt budskab programmatisk og rundrejse mellem MS G- og EML-formater.


Nøgleegenskaber

Læs eksisterende MSG-filer

Brug msg_reader til at åbne en fil ̋.ms gˆ og ∂ ms ġ-dokumentet∂ for at få adgang til dens strukturerede indhold. Begge klasser lever i navnespacet∂ aspose::email::foss:ms G ̈ .

#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 til læsning fra et „std::stream∂, hvilket er nyttigt i server-side eller pipeline sammenhænge, hvor filer ikke findes på disk.

Oprette beskeder programmatisk

mapi_message::create producerer en ny in-memory-meddelelse med emne og krop. Du kan derefter indstille afsenderoplysninger, tilføje modtagere og vedhæfte binære eller tekst nyttelast før du gemmer.

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

Konvertere MSG til EML

mapi_message understøtter direkte MSG-til EML konvertering gennem metoden ̋save_to_eml`. EM L-udgang er i overensstemmelse med RFC 5322 (MIME), hvilket gør det kompatibelt med enhver standard mail klient eller behandling pipeline.

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 fra EML

Den omvendte retning er lige så enkel: load_from_eml læser en EML-fil og producerer et ̋mapi_message` i hukommelsen, som derefter kan gemmes tilbage 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"));

Tilgang til CFB på lavt niveau

For avancerede anvendelsestilfælde såsom læsning af rå MAPI-egenskaber, der ikke er eksponeret ved API’et på højt niveau ?? cfb_reader giver direkte adgang til binær containeren Compound File, som understøtter 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();

Hurtig start

Trin 1 Klon og tilføj som undermappe

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

I dit projekt 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)

Trin 2 Indføje og anvende

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

Trin 3 Bygning

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

Støttede formater

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

Open Source & Licensing

Aspose.Email FOSS for C++ er udgivet under MIT-licensen. Den fulde kilde er tilgængelig på GitHub på aspose-email-foss/Aspose. E-mail-FOS S-for-Cpp. Kommerciel brug er tilladt uden royalties. Biblioteket har ingen runtime afhængigheder ud over en C ++ 17-kompilator og CMake 3.26 eller nyere.


Hvordan man begynder

  • Hvordan man begynder
  • Installationsvejledning
  • Udviklervejledning
  • KB Artikler
  • API-reference