Miten aloittaa Aspose.Email FOSS C++: lle

Miten aloittaa Aspose.Email FOSS C++: lle

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.

Vaihe 1 – kloonaus ja lisääminen CMake-projektiin

git clone https://github.com/aspose-email-foss/Aspose.Email-FOSS-for-Cpp.git

Lisää kirjasto alirekisteriksi ja linkitä se omalle sivulle. CMakeLists.txt:

add_subdirectory(Aspose.Email-FOSS-for-Cpp)
target_link_libraries(your_target PRIVATE AsposeEmailFoss::AsposeEmailFoss)

Kirjastossa käytetään vain C++-standardin kirjastot ja ei ole kolmannen osapuolen riippuvuuksia. GCC 9+, Clang 10+, ja MSVC 2019+ ovat ilmoitettu tuettu projektin README.


Vaihe 2 — Lue tiedosto

Sisältää myös mapi_message header ja avaa tiedosto, jossa on 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() Pysäytä kaikki tiedostot ja pane ne pois. Käytä Microsoft Outlook -ohjelmaa ilman asennusta.


Vaihe 3 — Luo uusi tiedosto

Käytä mapi_message::create() Muistiin kirjoitetun viestin luominen, lähettäjän ja vastaanottajan asettaminen kentät ja tallenna levylle, jossa on 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() Se lähettää muistiin viestin. save() Hyväksyy tiedoston polku, a std::ostream, tai ei argumentteja (palauttaa a std::vector<std::uint8_t>).


Vaihe 4 — Muunna EML kohteeseen MSG (ja takaisin)

Lataa tiedosto, jossa on mapi_message::load_from_eml(),ja sitten sarjataan se MSG kanssa save().Pyöräilykierros säilyttää aiheen, yksinkertaisen tekstin kehon, HTML-kehon ominaisuuden, Lähettäjät, vastaanottajat ja liitteet:

#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";
}

Yleisiä ongelmia ja korjauksia

Binary mode ei ole asetettu virtaan. Avaa tiedosto, jossa on std::ifstream input("file.msg") ilman std::ios::binary saattaa aiheuttaa Windowsin viivakohtaisen käännöksen, joka vahingoittaa CFB:tä Kontti - Käynti std::ios::binary Sekä tulostus- että syöttövirtaukset.

Vasemmanpuoleinen virhe: AsposeEmailFoss::AsposeEmailFoss Ei löydy. Tarkista tämä add_subdirectory(Aspose.Email-FOSS-for-Cpp) Näyttää ennen target_link_libraries(...) Sinun omassa CMakeLists.txt,ja että alihankkijan nimi on Täsmälleen sama kuin kloonattujen.

C++17 ei ole käytössä. Kirjaston on oltava C++17-ominaisuus. Jos kompilointiohjelma ilmoittaa virheistä rakenteellisista sitoumuksista tai std::filesystem,Lisää lisää set(CMAKE_CXX_STANDARD 17) Sillä la Yläosassa sinun CMakeLists.txt Ennen kuin add_subdirectory soittaminen .

Tyhjä aihe tai keho lukemisen jälkeen. Jotkut MSG-tiedostot tallentavat tekstiä Unicode-ominaisuuksiin Toiset käyttävät ANSI-koodisivun ominaisuuksia. message.subject() ja message.body() palauttaa merkkijono mistä tahansa tallennuksesta; tarkista message.html_body() Jos message.body() Se on tyhjä.

load_from_eml Pysäytä päänsärky väärin. Tarkista, että tiedosto käyttää EML 5322 linjan päätteitä (CRLF) ja sillä on voimassa olevat MIME otsikot. Kirjasto ei ohita hiljaa Pahoinvoivat päällystöt.

Usein kysytyt kysymykset

Tarvitaanko kirjastoon Microsoft Outlook tai jokin COM-komponentti?

FOSS for C++ käyttää omaa CFB- ja MAPI -analyysiohjelmaa eikä sillä ole kolmannen osapuolen riippuvuuksia. Se toimii Linuxissa, macOS: ssa ja Windowsissa ilman Outlookin asentamista.

Millaisia kirjoja voin lukea ja kirjoittaa?

MSG (Outlook Message), EML (5322 / MIME) ja CFB (Compound File Binary) ovat tuettuja sekä lukemiseen että kirjoittamiseen. TNEF (winmail.dat),IMAP,SMTP ja POP3 eivät ole tuettuja.

Miten tallentaa viesti byteihin tiedoston sijaan?

soittaminen save() tai save_to_eml() Ei mitään, molemmat palaavat std::vector<std::uint8_t>, jonka voit kirjoittaa mihin tahansa puskurin tai virran.

Millaisia C++ standardeja tarvitaan?

C++17 Kirjaston käyttö std::filesystem, std::optional,ja muut C++17 GCC 9+, Clang 10+ ja MSVC 2019+ ovat lueteltuina tuettuina. Ohjelma on lukemassa.

Onko pakettien hallinta (vcpkg, Conan) julkaistu?

Versio 0.1.0 jaetaan vain lähdekoodin kautta.Kloonaa tallennus ja käytä add_subdirectory kuten edellä on esitetty.Pakettien hallinta-ilmoitukset saattavat lisääntyä tulevaisuudessa Vapautuksia siis.

Katso myös

 Suomi