Hogyan lehet elkezdeni a Aspose.Email FOSS C++

Hogyan lehet elkezdeni a Aspose.Email FOSS 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.

1. lépés - Klónozás és hozzáadás a CMake projekthez

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

Adja hozzá a könyvtárat alkatrészként, és kössön össze az Ön CMakeLists.txt:

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

A könyvtár csak a C++ szabványos könyvtárt használja, és nincs harmadik féltől származó függőség. GCC 9+, Clang 10+ és MSVC 2019+ jelentései a README projektben támogatottaknak megfelelően vannak feltüntetve.


2. lépés - Olvassa el a MSG fájlt

Tartalmazza a mapi_message header, és nyissa meg a fájlt a 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() A fájlban található összes CFB-tartály elemzése és a MAPI A Microsoft Outlook telepítése nem szükséges.


3. lépés: Hozzon létre egy új fájlt

használja mapi_message::create() Az üzenet létrehozása a memóriában, a küldő és a címzett beállítása mezők, és mentse a lemezt a 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() A memória üzenet létrehozása. save() A fájl útja, egy std::ostream, vagy nincs érv (vissza a std::vector<std::uint8_t>).


4. lépés — Konvertáljon EML a MSG (és vissza)

A fájl betöltéséhez a mapi_message::load_from_eml(),Ezután a sorosokhoz csatlakozva save().A körút megőrzi a témát, a tiszta szöveg testét, az HTML test tulajdonságát., Küldők, címzettek és mellékletek:

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

Közös problémák és fixok

Bináris mód nem állítva a stream. Nyissa meg a fájlt a std::ifstream input("file.msg") nélkül std::ios::binary A Windows vonal végét lefordító fordítás a CFB-t megronthatja. konténer - átjáró std::ios::binary Mind a bemeneti, mind az kimeneti áramlások esetében.

A bal oldali hiba: AsposeEmailFoss::AsposeEmailFoss Nem találták meg. Ellenőrizze ezt add_subdirectory(Aspose.Email-FOSS-for-Cpp) Előtte megjelent target_link_libraries(...) Az Önöknél CMakeLists.txt,Az aligazgatótól származó név A klónozott mappát pontosan meg kell határozni.

C++17 nem engedélyezett. A könyvtár C++17 funkciókat igényel. Ha a kompilátor hibákat jelent strukturált kötelezettségek, vagy std::filesystem,Add hozzá set(CMAKE_CXX_STANDARD 17) A The A te felső CMakeLists.txt Mielőtt a add_subdirectory Hívjon meg.

Üres tárgy vagy test az olvasás után. Egyes MSG fájlok tárolják a szöveget az Unicode tulajdonságokban Mások viszont az ANSI kódoldali tulajdonságokat használják. message.subject() és message.body() visszaadja a szálat, amelyből a tároló jelen van; ellenőrizze message.html_body() Ha message.body() Az üres.

load_from_eml A fentiekből kifolyólag a károsodott. Ellenőrizze, hogy a EML fájl használja RFC 5322 A könyvtárnak van egy érvényes MIME fejléce, és nem hagyja el a csendben A fejjel elszíneződött.

Gyakran ismételt kérdések

A könyvtárhoz Microsoft Outlook vagy bármely COM-összetevő szükséges?

A C++-hoz készült FOSS saját CFB és MAPI elemzőt használ, és nincs harmadik féltől származó függőség. Linuxon, macOS-on és Windowson működik Outlook telepítése nélkül.

Milyen formátumban tudok olvasni és írni?

MSG (Outlook üzenet), EML (5322 / MIME) és CFB (Compound File Binary) támogatott mind az olvasás, mind a írás. TNEF (winmail.dat),IMAP,SMTP és POP3 nem támogatottak.

Hogyan menthetek üzenetet bajtban egy fájl helyett?

hívás save() vagy save_to_eml() Nem volt semmi baj, mindketten visszatértek. std::vector<std::uint8_t>, amelyet bármely pufferre vagy áramlásra írhat.

Milyen C++ szabványra van szükség?

C++17 A könyvtár használata std::filesystem, std::optional,A C++17 és a többi A GCC 9+, a Clang 10+ és az MSVC 2019+ funkciók a támogatott listán szerepelnek. A projekt olvasása.

Van-e csomagkezelő kiadás (vcpkg, Conan) a rendszerben?

A 0.1.0 verzió csak forrásból terjeszthető. klónolja a tárhelyet, és használja add_subdirectory A csomagkezelő manifesztumait a jövőben is hozzáadhatjuk. A felszabadulás.

Ezért is

 Magyar