Kaip pradėti naudotis C++ FOSS
Aspose.Email FOSS for C++ is a library for reading and writing Outlook MSG files, EML messages, and CFB containers. It has no third-party dependencies and requires only a C++17 compiler and CMake.
1 žingsnis - Klonuokite ir pridėkite prie savo CMake projekto
git clone https://github.com/aspose-email-foss/Aspose.Email-FOSS-for-Cpp.gitPridėkite biblioteką kaip pogrupį ir susieti ją su savo CMakeLists.txt:
add_subdirectory(Aspose.Email-FOSS-for-Cpp)
target_link_libraries(your_target PRIVATE AsposeEmailFoss::AsposeEmailFoss)Bibliotekoje naudojama tik C++ standartinė biblioteka ir nėra jokių trečiųjų šalių priklausomybių. „GCC 9+, Clang 10+“ ir „MSVC 2019+“, kaip pranešama, palaikoma projekte README.
2 žingsnis — Skaityti failą MSG
Įtraukti į mapi_message Header ir atidaryti failą su mapi_message::from_stream():
#include <fstream>
#include <iostream>
#include "aspose/email/foss/msg/mapi_message.hpp"
int main()
{
std::ifstream input("sample.msg", std::ios::binary);
auto message = aspose::email::foss::msg::mapi_message::from_stream(input);
std::cout << "Subject: " << message.subject() << '\n';
std::cout << "From: " << message.sender_email_address() << '\n';
std::cout << "Body: " << message.body() << '\n';
for (const auto& recipient : message.recipients())
std::cout << "To: " << recipient.email_address << '\n';
for (const auto& attachment : message.attachments())
std::cout << "Attachment: " << attachment.filename
<< " (" << attachment.mime_type << ")\n";
}mapi_message::from_stream() Išsiaiškinkite visus failų sąrašus ir išsaugokite visus duomenis. Įrašyti įrankį, kad būtų galima naudoti „Microsoft Outlook“ įrenginį.
3 žingsnis - Sukurkite naują failą MSG
Naudokite mapi_message::create() sukurti pranešimą atmintyje, nustatyti siuntėją ir gavėjui laukus ir išsaugoti diską su save():
#include <fstream>
#include "aspose/email/foss/msg/mapi_message.hpp"
int main()
{
auto message = aspose::email::foss::msg::mapi_message::create(
"Meeting Notes", "Please find the agenda attached.");
message.set_sender_name("Alice");
message.set_sender_email_address("alice@example.com");
message.add_recipient("bob@example.com", "Bob");
message.add_attachment(
"agenda.txt",
std::vector<std::uint8_t>{'I', 't', 'e', 'm', ' ', '1'},
"text/plain");
std::ofstream output("meeting_notes.msg", std::ios::binary);
message.save(output);
}mapi_message::create() sukuria atminties pranešimą. save() Priima failą kelias, a std::ostream, arba jokių argumentų (grąžinti a std::vector<std::uint8_t>).
4 žingsnis — Konvertuoti EML į MSG (ir atgal)
Įkelkite failą su mapi_message::load_from_eml(),ir tada serializuoti į MSG su save().Apskritoji kelionė išsaugo temą, paprastos tekstinės kūno, HTML kūnas savybes, Siuntėjai, gavėjai ir priedai:
#include <filesystem>
#include <iostream>
#include "aspose/email/foss/msg/mapi_message.hpp"
int main()
{
// EML → MSG
auto message = aspose::email::foss::msg::mapi_message::load_from_eml(
std::filesystem::path("message.eml"));
std::cout << "Subject: " << message.subject() << '\n';
message.save(std::filesystem::path("converted.msg"));
// MSG → EML round-trip
auto loaded = aspose::email::foss::msg::mapi_message::from_file(
std::filesystem::path("converted.msg"));
loaded.save_to_eml(std::filesystem::path("roundtrip.eml"));
std::cout << "Saved converted.msg and roundtrip.eml\n";
}Bendros problemos ir taisyklės
Dvejetainis režimas nenustatytas ant srauto. Atidarykite failą su std::ifstream input("file.msg") Be std::ios::binary gali sukelti „Windows“ linijos pabaigos vertimą, kuris sugadina CFB Konteineris - perėjimas std::ios::binary Tiek įvesties, tiek išeities srautai.
Kairės klaidos: AsposeEmailFoss::AsposeEmailFoss Neįsivaizduokite. Patikrinkite tai add_subdirectory(Aspose.Email-FOSS-for-Cpp) Pasirodo anksčiau target_link_libraries(...) Jūsų CMakeLists.txt,ir kad subdirektorių pavadinimas Tai tiksliai atitinka klonavimo formą.
C++17 nėra įjungtas. Biblioteka reikalauja C++17 funkcijų. Jei kompiliatorius praneša apie klaidas struktūrizuotų įsipareigojimų arba std::filesystem,Pridėti set(CMAKE_CXX_STANDARD 17) Prie to viršūnė Jūsų CMakeLists.txt Prieš tai add_subdirectory Skambinkite.
Tuščias dalykas ar kūnas po skaitymo. Kai kurie failai saugomi Unicode savybėse. Kai kurie naudojasi ANSI kodo puslapio savybėmis. message.subject() ir message.body() grąžinti eilutę iš bet kurios saugyklos; patikrinkite message.html_body() Jei message.body() Jis tuščias.
load_from_eml Įsilaužė į netinkamą vietą. Patikrinkite, ar failas naudojamas EML 5322 eilutės galuose (CRLF) ir turi galiojančius MIME antraštes. biblioteka tyliai nepaleidžia Neteisingi galvos apdangalai.
Dažnai užduodami klausimai
Ar bibliotekoje reikia „Microsoft Outlook“ arba bet kurio COM komponento?
Aspose.Email FOSS C++ naudoja savo CFB ir MAPI analizatorių ir neturi trečiųjų šalių priklausomybės. Jis veikia Linux, macOS ir Windows be įdiegta Outlook.
Kokius formatus galiu skaityti ir rašyti?
MSG (Outlook pranešimas), EML (5322 / MIME) ir CFB (kompound failų dvejetainis) palaikomi tiek skaitymo, tiek rašymo. TNEF (winmail.dat),IMAP,SMTP ir POP3 nėra palaikyti.
Kaip įrašyti pranešimą į baitus, o ne failą?
skambinti save() arba save_to_eml() Nėra jokių argumentų, abu grįžta std::vector<std::uint8_t>, kurį galite parašyti bet kuriam buferio ar srauto.
Kokius C++ standartus reikia?
C++17 - bibliotekos naudojimas std::filesystem, std::optional,Kiti C++17 GCC 9+, Clang 10+ ir MSVC 2019+ yra išvardyti kaip palaikomi Projektas yra skaitomas.
Ar yra paketo valdytojo leidimas (vcpkg, Conan)?
Versija 0.1.0 platinama tik iš šaltinio. Klonuokite saugyklą ir naudokite add_subdirectory Kaip parodyta aukščiau.Paketų tvarkymo manifestas gali būti pridėtas ateityje Išlaisvinkite juos.