Ievads
Darbs ar Outlook MSG failiem C++ vēsturiski ir prasījis tikai Windows COM automatizāciju
vai arī smagas trešo pušu bibliotēkas ar ierobežojošām licencēm. Aspose.Email FOSS for C++
maina šo: tas ir tīra C++17 bibliotēka bez ārējām atkarībām, bez COM, un bez
platformas specifiska koda. Tā tiek būvēta identiski Linux, macOS un Windows.
Bibliotēka ir izlaista zem MIT licences un izplatīta kā avots caur GitHub. Jūs integrējat to, klonējot repozitoriju un pievienojot to kā CMake apakšdirektoriju — nav nepieciešama pakotņu pārvaldnieka reģistrācija, un bināri nav jābūvē iepriekš.
Šis ieraksts pārlūko galveno darbplūsmu: esoša MSG faila nolasīšana, tā īpašību pārbaude, jaunas ziņas izveide programmatiski un pāreja starp MSG un EML formātiem.
Galvenās funkcijas
Lasīt esošos MSG failus
Izmantojiet msg_reader, lai atvērtu .msg failu, un msg_document, lai piekļūtu tā strukturētajam saturam.
Abas klases atrodas aspose::email::foss::msg vārdtelpā.
#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 arī ir from_stream pārslogojums, lai lasītu no std::istream, kas ir noderīgi servera pusē vai cauruļvadu kontekstos, kur faili nav pieejami diskā.
Izveidot ziņojumus programmatiski
mapi_message::create izveido jaunu atmiņā esošu ziņojumu ar tematu un ķermeni. Pēc tam varat iestatīt sūtītāja datus, pievienot saņēmējus un pievienot binārus vai teksta slēptos datus pirms saglabāšanas.
#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"));
Konvertēt MSG uz EML
mapi_message atbalsta tiešu MSG uz EML konvertēšanu, izmantojot save_to_eml metodi.
EML izvade atbilst RFC 5322 (MIME), padarot to saderīgu ar jebkuru standarta pasta
klientu vai apstrādes cauruļvadu.
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();
Ielādēt no EML
Apgrieztais virziens ir tikpat vienkāršs: load_from_eml lasa EML failu un izveido mapi_message atmiņā, ko pēc tam var saglabāt atpakaļ uz MSG.
auto from_eml = aef::msg::mapi_message::load_from_eml(
std::filesystem::path("message.eml"));
from_eml.save(std::filesystem::path("restored.msg"));
Zema līmeņa CFB piekļuve
Papildu lietošanas gadījumiem — piemēram, izejvielu MAPI īpašību lasīšanai, kas nav pieejamas augsta līmeņa API — cfb_reader nodrošina tiešu piekļuvi Compound File Binary konteineram, kas ir pamats MSG formātam.
#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();
Ātrais sākums
1. solis — Klonēt un pievienot kā apakšdirektoriju
git clone https://github.com/aspose-email-foss/Aspose.Email-FOSS-for-Cpp.git
Jūsu 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)
2. solis — Iekļaut un izmantot
#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. solis — Būvēšana
cmake -B build -DCMAKE_BUILD_TYPE=Release
cmake --build build
Atbalstītie formāti
| Formāts | Paplašinājums | Lasīt | Rakstīt |
|---|---|---|---|
| MSG (Outlook Message) | .msg | ✓ | ✓ |
| EML (RFC 5322 / MIME) | .eml | ✓ | ✓ |
| CFB (Compound File Binary) | .msg, .cfb | ✓ | ✓ |
Atvērtā pirmkods un licencēšana
Aspose.Email FOSS for C++ ir izlaists zem MIT licences. Pilns avots ir pieejams
GitHub vietnē aspose-email-foss/Aspose.Email-FOSS-for-Cpp.
Komerciāla lietošana ir atļauta bez honorāriem. Bibliotēkai nav izpildlaika atkarību
izņemot C++17 kompilatoru un CMake 3.26 vai jaunāku.