Jak začít s Aspose.Email FOSS pro C++

Jak začít s Aspose.Email FOSS pro C++

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.

Krok 1 – Klon a přidání do projektu CMake

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

Přidejte knihovnu jako podknihu a propojte ji ve vašem CMakeLists.txt:

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

Knihovna používá pouze standardní knihovnu C++ a nemá žádné závislosti třetích stran. GCC 9+, Clang 10+ a MSVC 2019+ jsou hlášeny jako podporované v projektu README.


Krok 2 – Přečtěte si soubor

Zahrnuje i mapi_message header a otevřete soubor s 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() Zobrazit všechny položky v souboru a odhalit všechny Vlastnosti prostřednictvím metody typovaného příslušenství. Instalace Microsoft Outlook není nutná.


Krok 3 – Vytvoření nového souboru

Použijte mapi_message::create() Vytvořit zprávu v paměti, nastavte odesílatele a příjemce a uložit na disk s 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() Vytvoří v paměti vzkaz. save() Přijímá cestu souboru, a std::ostream, nebo žádné argumenty (vrátit a std::vector<std::uint8_t>).


Krok 4 — Konvertovat EML na MSG (a zpět)

Nahrajte soubor s mapi_message::load_from_eml(),a pak serializovat na MSG s save().• Round-trip zachovává předmět, tělo jednoduchého textu, vlastnosti HTML těla, Odesílatelé, příjemci a přílohy:

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

Společné problémy a opravy

Binární režim není nastaven na proud. Otevřete soubor s std::ifstream input("file.msg") Bez std::ios::binary může způsobit překlad na konci řádku, který zkorumpuje CFB Kontejnery - průjezd std::ios::binary Jak pro vstupní, tak i výstupní proudy.

Chybová linka: AsposeEmailFoss::AsposeEmailFoss Nenašel se. Zkontrolujte to add_subdirectory(Aspose.Email-FOSS-for-Cpp) Předtím se zdálo target_link_libraries(...) V tvém CMakeLists.txt,a pod názvem Podřízený Přesně odpovídá klonovanému složení.

C++17 není povolen. Knihovna vyžaduje funkce C++17. Pokud kompilátor hlásí chyby strukturovaných závazků nebo std::filesystem,Přidat set(CMAKE_CXX_STANDARD 17) Na The Top z vašeho CMakeLists.txt Předtím než add_subdirectory volání .

Prázdné tělo nebo předmět po čtení. Některé soubory MSG ukládají text do vlastností Unicode Jiní používají vlastnosti ANSI code-page. message.subject() a message.body() vrátit řetěz z kteréhokoli úložiště; kontrolujte message.html_body() Pokud message.body() Je to prázdné.

load_from_eml Vybírejte z malých šuplíků. Zkontrolujte, zda soubor používá EML 5322 CRLF (line endings) a má platné MIME záhlaví. knihovna nepřeskočí tiše Špatně tvarované hlavy.

Často kladené otázky

Vyžaduje knihovna Microsoft Outlook nebo jakoukoli součást COM?

Pro C++ používá vlastní CFB a parser MAPI a nemá žádné závislosti třetích stran. Funguje na Linux, macOS i Windows bez instalace Outlook.

Jaké formáty můžu číst a psát?

HLAVNÍ POZNÁMKA: Hlávní pohlednice (HLV) a hlídkové pohledy (CHLB) jsou podporovány pro čtení i psaní.

Jak uložit zprávu do bajtů namísto souboru?

volání save() nebo save_to_eml() Bez argumentů, oba se vracejí. std::vector<std::uint8_t>, které můžete psát do jakéhokoliv bufferu nebo proudu.

Jaký standard C++ je potřeba?

C++17 - knihovna používá std::filesystem, std::optional,Další informace o C++17 GCC 9+, Clang 10+ a MSVC 2019+ jsou uvedeny jako podporované v Projekt čte.

Existuje verze správce balíčků (vcpkg, Conan)?

Verze 0.1.0 je distribuována pouze prostřednictvím zdroje. Klonování úložiště a použití add_subdirectory Jak je uvedeno výše. manifesty správce balíčků mohou být v budoucnu přidány Uvolněte se .

Také se

 Čeština