התחל עם מטרה. דואר אלקטרוני FOSS עבור C ++

התחל עם מטרה. דואר אלקטרוני FOSS עבור C ++

FOSS za C++ je knjižnica za čitanje i pisanje Outlook MSG datoteka, poruka EML i CFB kontejnera. Nema ovisnosti treće strane i zahtijeva samo kompilator C ++ 17 i CMake .

{/i:

Korak 1 Klon i dodati u svoj CMake projekt

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

Dodajte knjižnicu kao podkatalog i povežite je u `CMakeLists.txt':

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

Biblioteka koristi samo C++ standardnu knjižnicu i nema ovisnosti trećih strana. GCC 9+, Clang 10+ i MSVC 2019+ su prijavljeni kao podržani u projektu README .


Korak 2 Pročitajte MSG datoteku

Ustavite zaglavlje mapi_message i otvorite datoteku s oznakama ゚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() analizira CFB kontejner datoteke MSG i otkriva sve svojstva MAPI putem tipiranih pristupnih metoda. Ne zahtijeva se instalacija Microsoft Outlook-a.


Korak 3 Stvoriti novu datoteku MSG

Koristite mapi_message::create() za izgradnju poruke u memoriji, postaviti polja pošiljatelja i primaoca te pohraniti 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() proizvodi poruku u memoriji. ̋save(( prihvaća putanje datoteke, aˇ∂std::ostream ili nijedan argument (vraćajući ゚std::vectorstd::uint8_t).


Korak 4 Preobraziti EML u MSG (i natrag)

Uplatiti datoteku EML s mapi_message::load_from_eml(), a zatim serijalno u MSG sa ⌒save (())`. Okruglo održava predmet, tijelo prostog teksta, HTML svojstvo tijela, šaljivač, primaoci i prilozi:

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

{/i:


Česta pitanja i rješenja

Binarni način nije postavljen na struju. Otvaranje datoteke s ulaznim std::ifstream("file.msg") bez ゚std::ios::binary` može uzrokovati Windows prevod koji završava linijom i pokvari CFB kontejner. Prolazite ⌒std::ios: binarnoヽ za ulazne i izlazne tokove.

Provjerite da se ime poddirektorija točno odgovara kloniranom mapama.

C++17 nije omogućen. Biblioteka zahtijeva karakteristike C ++ 17. Ako kompilator prijavi greške o strukturiranim vezama ili std::filesystem, dodajte ̋set(CMAKE_CXX_STANDARD 17)∂ na vrhu vašeg ˆCMakeLists.txt∂ prije poziva ›add_subdirectory̅ .

Prazna predmet ili tijelo nakon čitanja. Neke MSG datoteke pohranjuju tekst u Unicode svojstvima, dok druge koriste ANSI kod-stranica svojstva. message.subject() i ̋messages.body (()⌒ vraćati niz iz bilo kojeg skladišta je prisutan; provjerite ∂messaging.html_(body (); ako je ゚messagegodnost ().

Provjerite da datoteka EML koristi RFC 5322 završetka redova (CRLF) i ima valjane glave MIME. Biblioteke ne preskoči u tišini loše formirane glave.

Česta pitanja

Da li je biblioteka zahtijeva Microsoft Outlook ili bilo COM komponente?

Ne. Aspose.Email FOSS za C++ koristi svoj vlastiti CFB i MAPI parser i nema ovisnosti treće strane. Radi na Linuxu, macOS-u i Windows bez instaliranog Outlook-a.

Koje formate mogu čitati i pisati?

MSG (Outlook Message), EML (5322 / { PLACE HOLDR_3) i CFB podupiru se za čitanje i pisanje. TNEF (winmail.dat),IMAP, SMTP i POP3 nisu podržani.

Kako da sačuvam poruku u bajtove umjesto datoteke?

Zovi ` (save) ) (’) ili ̋ ( save_to_eml) (); bez argumenata. Oboje vraćaju ∂ std::vector std::uint8_t∂, što možete pisati u bilo koji tampon ili tok.

Koji je C++ standard potreban?

C++17. Biblioteka koristi std::filesystem, ⌒std::optionalヽ i druge karakteristike standardne knjižnice za C ++ 17. GCC 9+, Clang 10+ i MSVC 2019 + navedeni su kao podržani u projektu README.

Postoji li izdanje menadžera paketa (vcpkg, Conan)?

Verzija 0.1.0 distribuirana je samo putem izvora. Klonirajte repozitorij i koristite add_subdirectory kao što je prikazano gore. Manifesti menadžera paketa mogu se dodati u budućim izdanjima.

Također pogledajte:

  • FAQ Aspose.Slides FOSS za C++
  • Kako čitati MSG datoteke u C++
  • Kako pretvoriti EML u MSG na C++?
  • Aspose.Email FOSS za C ++ na GitHub-u
 Hrvatski