Įvadas
Dirbti su Outlook MSG failais C++ istorijoje reikėjo tik Windows COM automatizacijos
arba sunkių trečiųjų šalių bibliotekų su ribojančiomis licencijomis. Aspose.Email FOSS for C++
keičia tai: tai gryna C++17 biblioteka be išorinių priklausomybių, be COM ir be
platformos specifinio kodo. Ji kompiliuojama identiškai Linux, macOS ir Windows.
Biblioteka išleista pagal MIT licenciją ir platinama kaip šaltinis per GitHub. Ją integruojate klonuodami saugyklą ir pridėdami ją kaip CMake poaplankį — nereikia registruoti paketo tvarkyklės, ir nereikia iš anksto sukurti dvejetainių failų.
Šiame įraše apžvelgiama pagrindinė darbo eiga: esamo MSG failo skaitymas, jo savybių tikrinimas, naujo pranešimo kūrimas programiškai ir duomenų konvertavimas atgal tarp MSG ir EML formatų.
Pagrindinės funkcijos
Skaityti esamus MSG failus
Naudokite msg_reader, kad atidarytumėte .msg failą ir msg_document, kad pasiektumėte jo struktūruotą turinį.
Abi klasės yra aspose::email::foss::msg vardų erdvėje.
#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 taip pat turi from_stream overload, skirtą skaityti iš std::istream, kas yra naudinga serverio pusėje arba duomenų srauto kontekstuose, kai failų nėra diske.
Kurti žinutes programiškai
mapi_message::create sukuria naują atmintyje esantį pranešimą su tema ir turiniu. Jūs tada galite nustatyti siuntėjo duomenis, pridėti gavėjus ir prisegti dvejetainius arba tekstinius duomenis prieš išsaugant.
#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"));
Konvertuoti MSG į EML
mapi_message palaiko tiesioginį MSG į EML konvertavimą per save_to_eml metodą.
EML išvestis atitinka RFC 5322 (MIME), todėl ji suderinama su bet kuriuo standartiniu pašto
klientu arba apdorojimo konvejeriu.
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();
Įkelti iš EML
Atvirkštinis kryptis yra taip pat paprasta: load_from_eml skaito EML failą ir sukuria mapi_message atmintyje, kurį vėliau galima išsaugoti atgal į MSG.
auto from_eml = aef::msg::mapi_message::load_from_eml(
std::filesystem::path("message.eml"));
from_eml.save(std::filesystem::path("restored.msg"));
Žemo lygio CFB prieiga
Sudėtingesniems naudojimo atvejams — pvz., skaitant neapdorotas MAPI savybes, kurios nėra prieinamos
aukšto lygio API — cfb_reader suteikia tiesioginę prieigą prie Compound File Binary konteinerio
kuris yra MSG formato pagrindas.
#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();
Greitas pradžia
Žingsnis 1 — Klonuoti ir pridėti kaip poaplankį
git clone https://github.com/aspose-email-foss/Aspose.Email-FOSS-for-Cpp.git
Jūsų projekte 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)
Žingsnis 2 — Įtraukti ir naudoti
#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";
}
3 žingsnis — Sukurti
cmake -B build -DCMAKE_BUILD_TYPE=Release
cmake --build build
Palaikomi formatai
| Formatas | Plėtinys | Skaityti | Rašyti |
|---|---|---|---|
| MSG (Outlook Message) | .msg | ✓ | ✓ |
| EML (RFC 5322 / MIME) | .eml | ✓ | ✓ |
| CFB (Compound File Binary) | .msg, .cfb | ✓ | ✓ |
Atviro kodo ir licencijavimas
Aspose.Email FOSS for C++ išleista pagal MIT licenciją. Pilnas šaltinis prieinamas
GitHub adresu aspose-email-foss/Aspose.Email-FOSS-for-Cpp.
Komercinis naudojimas leidžiamas be royalty mokėjimų. Biblioteka neturi vykdymo laiko priklausomybių
virš C++17 kompiliatoriaus ir CMake 3.26 arba naujesnės versijos.