Einführung

Die Arbeit mit Outlook MSG-Dateien in C++ erfordert historisch nur Windows-COM-Automatisierung oder schwere Drittanbieterbibliotheken mit restriktiven Lizenzen. Aspose.Email FOSS für C ++ ändert das: es ist eine reine C + 17 Bibliothek ohne externe Abhängigkeiten, keine COM und keinen plattformspezifischen Code. Es baut identisch auf Linux, macOS und Windows auf.

Die Bibliothek wird unter der MIT-Lizenz veröffentlicht und als Quell über GitHub verteilt. Sie integrieren sie, indem Sie das Repository klonen und es als CMake Subdirectory hinzufügen keine Paketmanagerregistrierung erforderlich ist und keine Binäre vorgefertigt werden müssen.

Dieser Beitrag führt durch den Kern-Arbeitsfluss: Lesen einer vorhandenen MSG-Datei, Überprüfung ihrer Eigenschaften, Erstellen eines neuen Nachrichten programmatisch und Hin- und Herumschlagen zwischen MS G-und EML-Formaten.


Hauptmerkmale

Lesen von vorhandenen MSG-Dateien

Verwendung msg_reader Eröffnung einer .msg Akten und msg_document Zugang zu den strukturierten Inhalten. Beide Klassen leben in den aspose::email::foss::msg Namensraum.

#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 hat auch eine from_stream Überlastung für den Lesen von einem std::istream, Dies ist nützlich in Server- oder Pipeline-Kontexten, wo keine Dateien auf der Festplatte vorhanden sind.

Nachrichten programmatisch erstellen

mapi_message::create Erzeugt eine neue in-Memory-Nachricht mit einem Thema und Körper. können dann senden Details festlegen, Empfänger hinzufügen und binäre oder Text-Nutbelastungen vor dem - Ich spare.

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

Umwandeln von MSG in EML

mapi_message Die Kommission hat die Richtlinie über den Schutz der Umwelt durch eine neue Verordnung angenommen. save_to_eml Methode. EML-Ausgabe entspricht RFC 5322 (MIME), so dass es mit jeder Standardmail kompatibel ist. die Kunden- oder Verarbeitungspipeline.

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 aus dem EML-Bereich

Die umgekehrte Richtung ist ebenso einfach: load_from_eml Liest eine EML-Datei aus. und erzeugt eine mapi_message in der Speicher, die dann wieder auf MSG gespeichert werden kann.

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

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

CFB-Zugang auf niedriger Ebene

Für fortgeschrittene Anwendungsfälle wie das Lesen von Roh-MAPI-Eigenschaften, die nicht durch den MAPI-System ausgesetzt sind. hohe API cfb_reader gibt direkten Zugriff auf den Compound File Binary Container Das ist die Grundlage des MSG-Formats.

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

Schneller Start

Schritt 1 Klonen und als Unterverzeichnis hinzufügen

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

In Ihrem 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)

Schritt 2 Einbeziehung und Verwendung

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

Schritt 3 Bauen

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

Unterstützte Formate

Format der DatenbankErweiterungLesen Sie .Schreiben .
MSG (Perspektivbotschaft).msg
EML (RFC 5322 / MIME).eml
CFB (Kompound-Datei binär).msg, .cfb

Open Source und Lizenzierung

Aspose.Email FOSS for C++ is released under the MIT license. The full source is available auf GitHub unter: Die Kommission hat die in Artikel 2 genannten Maßnahmen im Hinblick auf den Zugang zu Informationen und der Verarbeitung von Daten über das Internet erlassen.. Die Bibliothek hat keine Laufzeit-Abhängigkeiten. über einen C++17-Compiler und CMake 3.26 oder höher hinaus.


Wie man anfängt