Johdanto
Outlook MSG -tiedostojen käsittely C++:ssa on historiallisesti vaatinut Windows‑vain COM‑automaatiota tai raskaita kolmannen osapuolen kirjastoja, joilla on rajoittavia lisenssejä. Aspose.Email FOSS for C++ muuttaa tätä: se on puhdas C++17 -kirjasto ilman ulkoisia riippuvuuksia, ilman COMia, eikä alusta‑kohtaisia koodeja. Se käännetään identtisesti Linuxilla, macOSilla ja Windowsilla.
Kirjasto on julkaistu MIT‑lisenssin alla ja jaettu lähdekoodina GitHubin kautta. Integroi se kloonaamalla repositorio ja lisäämällä se CMake‑alikansioksi — pakettienhallinnan rekisteröintiä ei tarvita, eikä binaareja tarvitse esirakentaa.
Tässä postauksessa käydään läpi ydintyövirta: olemassa olevan MSG‑tiedoston lukeminen, sen ominaisuuksien tarkastelu, uuden viestin luominen ohjelmallisesti sekä MSG‑ ja EML‑muotojen välinen kaksisuuntainen muunnos.
Keskeiset ominaisuudet
Lue olemassa olevat MSG-tiedostot
Käytä msg_reader avaamaan .msg‑tiedosto ja msg_document päästäksesi sen rakenteelliseen sisältöön.
Molemmat luokat sijaitsevat aspose::email::foss::msg‑nimialueessa.
#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:lla on myös from_stream ylikuormitus lukemiseen std::istream:stä, mikä on hyödyllistä palvelinpuolella tai putkistoympäristöissä, joissa tiedostoja ei ole levyllä.
Luo viestejä ohjelmallisesti
mapi_message::create luo uuden muistissa olevan viestin, jossa on aihe ja runko.
Voit sitten asettaa lähettäjän tiedot, lisätä vastaanottajia ja liittää binaari- tai tekstisisältöjä ennen tallentamista.
#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"));
Muunna MSG EML:ksi
mapi_message tukee suoraa MSG-EML-muunnosta save_to_eml-menetelmällä.
EML‑tuloste noudattaa RFC 5322 (MIME) -standardia, mikä tekee siitä yhteensopivan minkä tahansa standardi‑sähköpostiohjelman
tai käsittelyputken kanssa.
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();
Lataa EML:stä
Käänteinen suunta on yhtä suoraviivainen: load_from_eml lukee EML‑tiedoston ja tuottaa mapi_message muistiin, jonka jälkeen se voidaan tallentaa takaisin MSG‑muotoon.
auto from_eml = aef::msg::mapi_message::load_from_eml(
std::filesystem::path("message.eml"));
from_eml.save(std::filesystem::path("restored.msg"));
Alatason CFB-pääsy
Edistyneissä käyttötapauksissa — kuten raakojen MAPI-ominaisuuksien lukemisessa, joita korkean tason API ei paljasta — cfb_reader tarjoaa suoran pääsyn Compound File Binary -konttiin, joka on MSG-muodon perusta.
#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();
Pika-aloitus
Vaihe 1 — Kloonaa ja lisää alikansiona
git clone https://github.com/aspose-email-foss/Aspose.Email-FOSS-for-Cpp.git
Projektissasi 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)
Vaihe 2 — Sisällytä ja käytä
#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";
}
Vaihe 3 — Rakenna
cmake -B build -DCMAKE_BUILD_TYPE=Release
cmake --build build
Tuetut formaatit
| Muoto | Tiedostopääte | Luku | Kirjoitus |
|---|---|---|---|
| MSG (Outlook Message) | .msg | ✓ | ✓ |
| EML (RFC 5322 / MIME) | .eml | ✓ | ✓ |
| CFB (Compound File Binary) | .msg, .cfb | ✓ | ✓ |
Avoin lähdekoodi & Lisensointi
Aspose.Email FOSS for C++ on julkaistu MIT‑lisenssillä. Täydellinen lähdekoodi on saatavilla
GitHubissa osoitteessa aspose-email-foss/Aspose.Email-FOSS-for-Cpp.
Kaupallinen käyttö on sallittu ilman rojaltimaksuja. Kirjastolla ei ole ajonaikaisia riippuvuuksia
paitsi C++17‑kääntäjä ja CMake 3.26 tai uudempi.