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
| Format | Extension | Read | Write |
|---|---|---|---|
| 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