1. Produkter
  2.   Aspose.Email
  3.   Aspose.Email FOSS for C++

Aspose.Email FOSS för C++

Läs, skapa och bearbeta Outlook MSG-filer och CFB-behållare från C++ — gratis och öppen källkod, utan beroende av Microsoft Outlook.

Open source C++-bibliotek för MSG- och CFB-filer

Aspose.Email FOSS för C++ är ett MIT-licensierat, öppen källkod C++-bibliotek för att arbeta med Microsoft Outlook .msg-filer och Compound File Binary (CFB)-behållare. Inkludera rubrikerna via CMake och börja omedelbart läsa, skapa och bearbeta e‑postmeddelanden utan att installera Microsoft Outlook eller någon proprietär runtime.

Biblioteket tillhandahåller två åtkomstnivåer. På låg nivå ger cfb_reader och cfb_writer full kontroll över CFB binära behållare — traversera katalogposter, läsa och skriva lagringsnoder och strömdata, samt inspektera den råa sektorlayouten. msg_reader och msg_writer hanterar MSG-formatet ovanpå CFB och exponerar MAPI‑egenskapsströmmar, mottagartabeller och bilagors sublagringar. På hög nivå låter mapi_message dig skapa nya meddelanden från grunden, läsa ämnen, kroppar, mottagare och bilagor, samt konvertera mellan MSG‑ och EML‑format. Biblioteket bygger på alla plattformar med en C++17-kompilator och har inga externa beroenden, vilket gör det lämpligt för Windows, Linux, macOS, Docker-containrar och inbyggda system. En företagsutgåva med ytterligare funktioner erbjuds som Aspose.Email for C++.

CFB-behållare Läs och skriv

  • Open CFB files: Ladda befintliga CFB-behållare från en filsökväg, ström eller bytearray via cfb_reader::from_file(), cfb_reader::from_stream() eller cfb_reader::from_bytes().
  • Traversera katalogträdet: Enumerera lagringar och strömmar med storage_ids(), stream_ids() och child_ids(), och navigera i nästlade hierarkier med resolve_path().
  • Inspektera noder: Kontrollera nodtyp med cfb_node::is_storage() och cfb_node::is_stream(), läs tidsstämplar via creation_time() och modified_time().
  • Skriv CFB-behållare: Bygg CFB-dokument programatiskt med cfb_document och serialisera till byte eller fil via cfb_writer::to_bytes() eller cfb_writer::write_file().

Var CFB-åtkomst används

  • MSG file inspection: CFB är containerformatet för Outlook .msg-filer — direkt CFB-åtkomst möjliggör forensisk inspektion och reparation.
  • Anpassade binära format: Alla äldre applikationer som använder CFB för datalagring kan läsas eller skrivas utan ett COM-beroende.
  • Data recovery: Traversera hela katalogträdet och extrahera råa strömbytes från skadade eller icke‑standard CFB‑filer.

MSG-fil Läs och skriv

  • Läs MSG-filer: Öppna Outlook MSG-filer med msg_reader::from_file() eller msg_reader::from_stream() och få åtkomst till de underliggande MAPI‑egenskapsströmmarna och bilagors underlagringar.
  • Skriv MSG-filer: Skapa MSG-filer från en msg_document med msg_writer::to_bytes() eller msg_writer::write_file().
  • MSG-dokumentinspektion: Åtkomst till versionsmetadata via msg_document::major_version(), msg_document::minor_version(), och kontrollera strikthet med msg_document::strict().
  • Convert to CFB: Extrahera det underliggande CFB-dokumentet från en MSG-fil via msg_document::to_cfb_document().

Var MSG‑bearbetning används

  • E-postarkiveringspipelines: Massläs .msg filer från arkivkataloger och extrahera metadata eller bilagor.
  • Migrationsverktyg: Konvertera MSG-samlingar till standardformat för import till icke-Outlook-system.
  • Rättslig upptäckt: Analysera råa MAPI‑egenskapsströmmar för att extrahera alla meddelandefält inklusive icke‑standardegenskaper.

Hög nivå MAPI Message API

  • Skapa meddelanden: Bygg ett komplett e‑postmeddelande med mapi_message::create(), sedan ställ in ämne, kropp och HTML kropp via set_subject(), set_body() och set_html_body().
  • Ställ in avsändardetaljer: Konfigurera set_sender_name(), set_sender_email_address(), och set_sender_address_type() för det utgående meddelandet.
  • Hantera bilagor: Ladda bilagor från byte eller strömmar med mapi_attachment::from_bytes() och mapi_attachment::from_stream(), och kontrollera inbäddade meddelanden via is_embedded_message().
  • Spara och ladda om: Serialisera med mapi_message::save() och ladda om med mapi_message::from_file() eller mapi_message::from_stream().

Var hög‑nivå‑API:t används

  • Automatiserad e‑postgenerering: Generera tusentals personliga MSG‑filer från dataregister i batchjobb.
  • Skapande av testfixture: Bygg kända fungerande MSG-filer med förutsägbart innehåll för integrationstestsviter.
  • Bilagautdrag: Ladda en MSG-fil, iterera bilagor och spara varje till disk.

EML- och MIME-konvertering

  • Load EML into mapi_message: Analysera en standard .eml-fil (RFC 5322 / MIME) till ett fullständigt mapi_message-objekt via mapi_message::load_from_eml().
  • Spara mapi_message som EML: Serialisera en mapi_message tillbaka till MIME-format med save_to_eml().
  • Rundresans integritet: Ämne, brödtext, avsändare, mottagare och bilagor bevaras genom EML till MSG till EML rundresor.

Var EML‑konvertering används

  • Format bridging: Ta emot e‑post som EML från e‑postservrar och konvertera till MSG för Outlook‑kompatibel lagring.
  • Standardefterlevnad: Konvertera proprietära MSG-filer till standard-MIME för leverans till någon e-posttransport.
  • Arkivnormalisering: Normalisera ett blandat arkiv av .eml och .msg filer till ett enda format.

Läs ämne från en MSG‑fil

Öppna en Outlook MSG-fil från en ström och skriv ut ämnet — ingen Microsoft Outlook krävs.

#include <fstream>
#include <iostream>

#include "aspose/email/foss/msg/mapi_message.hpp"

int main()
{
    std::ifstream input("sample.msg", std::ios::binary);
    auto message = aspose::email::foss::msg::mapi_message::from_stream(input);
    std::cout << message.subject() << '\n';
}

Skapa och spara ett MSG‑meddelande

Skapa ett komplett e‑postmeddelande med avsändare, mottagare och bilaga, och skriv sedan ut det i både MSG‑ och EML‑format.

#include <fstream>

#include "aspose/email/foss/msg/mapi_message.hpp"

int main()
{
    auto message = aspose::email::foss::msg::mapi_message::create("Hello", "Body");
    message.set_sender_name("Alice");
    message.set_sender_email_address("alice@example.com");
    message.add_recipient("bob@example.com", "Bob");
    message.add_attachment("note.txt", std::vector<std::uint8_t>{'a', 'b', 'c'}, "text/plain");

    std::ofstream msg_output("hello.msg", std::ios::binary);
    message.save(msg_output);

    std::ofstream eml_output("hello.eml", std::ios::binary);
    message.save_to_eml(eml_output);
}
  

Stöd och Lärande Resurser

 Svenska