目標の設定を始める. C++ のE-Mail FOSS

目標の設定を始める. C++ のE-Mail FOSS

Aspose.Email FOSS for C++ er et bibliotek for å lese og skrive Outlook-filer, meldinger og CFB-beholdere. Det har ingen tredjepartsavhengigheter og krever bare en C ++17 kompilerer og CMake .

Trinn 1 Klon og legg til i CMake-prosjektet ditt

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

Legg til biblioteket som et underfortegnelse og lenke det i ditt CMakeLists.txt:

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

Biblioteket bruker bare C++-standarden og har ingen tredjepartsavhengigheter. GCC 9+, Clang 10+ og MSVC 2019+ er rapportert som støttet i prosjektet README .


Trinn 2 Les en MSG fil

Inkluder mapi_message-overskriften og åpner en fil med ゚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() analyserer CFB-beholderen i filen MSG og avslører alle MAPI -egenskaper gjennom typede tilgangsmetoder. Ingen Microsoft Outlook-installasjon er nødvendig.


Trinn 3 Lag en ny MSG fil

Bruk mapi_message::create() til å bygge en melding i minnet, angi sender- og mottakerfelter, og lagre på disk med ̋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() produserer en melding i minnet. ̋save(( aksepterer filvei, et ∂std::ostream eller ingen argumenter (returnerer a ゚std::vector< std::uint8_t> ゙).


Trinn 4 Konvertere EML til MSG (og tilbake)

Last en EML fil med mapi_message::load_from_eml(), deretter serialisere til MSG med (spar)⌒. Rundturen beholder emnet, enkeltekstlegemet, HTML-legemetsegenskaper, avsender, mottakere og vedlegg:

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

Vanlige problemer og løsninger

Binær modus ikke satt på strømmen. Å åpne en fil med std::ifstream input (("file.msg") ") ■ uten ⌒std::ios::binary kan føre til at Windows-linjeende oversettelse som ødelegger CFB containeren. Pass ヽ std::ios: binary゚ for både inngang og utgang strømmer.

Linkerfeil: AsposeEmailFoss::AsposeEmailFoss ikke funnet. Kontroller at ̋add_subdirectory(Aspose.Email-FOSS-for-Cpp) ∂ vises før ゚target_link_libraries ((…) ⌒ i ditt CMakeLists.txt ∈, og at subdirektornavnet stemmer nøyaktig med den klonerte mappen.

C++17 er ikke aktivert. Biblioteket krever funksjoner i C+17. Hvis kompilatoren rapporterer feil om strukturerte bindinger eller std::filesystem, legg til ̋set(CMAKE_CXX_STANDARD 17)∂ øverst på ditt CMakeLists.txt∂ før oppkallet add-subdirectory∂ .

Tomt emne eller kropp etter lesing. Noen MSG-filer lagrer tekst i Unicode-egenskaper mens andre bruker ANSI kode-side egenskaper. message.subject() og ̋messages.body (()⌒ returnere strengen fra hvilken som helst lagring er til stede; sjekk ∂messagehotell.html_(body)゚ hvis ̅messaging.bodˇ er tomt.

load_from_eml kastes på feilformert EML. Kontroller at filen EML bruker RFC 5322 linjeendringer (CRLF) og har gyldige MIME overskrifter. Biblioteket hopper ikke stille over feilaktige overskriftene.

Ofte stilte spørsmål

Krenger biblioteket Microsoft Outlook eller noen COM-komponent?

Nei. Aspose.Email FOSS for C++ bruker sin egen CFB og MAPI parser, og har ingen tredjeparts avhengigheter. Det fungerer på Linux, macOS og Windows uten Outlook installert.

Hvilke formater kan jeg lese og skrive?

MSG (Outlook Message), EML (5322 / { PLACE HOLDR_3) og CFB (Compound File Binary) støttes både for lesing og skriving. TNEF (winmail.dat),IMAP, SMTP og POP3 er ikke støttet.

Hvordan kan jeg lagre en melding til bytes i stedet for en fil?

Ring `() (’) eller ̋save_to_eml (() (’) uten argumenter. Begge returnerer ‘∀std::vectorstd::uint8_t’ , som du kan skrive til en buffer eller strøm.

Hvilken C++ standard kreves?

Biblioteket bruker std::filesystem, ⌒std::optionalヽ og andre C++17-standarder. GCC 9+, Clang 10+ og MSVC 2019+ er oppført som støttet i prosjektet README.

Finnes det en pakkemanager-utgivelse (vcpkg, Conan)?

Versjon 0.1.0 distribueres kun via kildekode. Klon repositoriet og bruk add_subdirectory som vist ovenfor. Pakkehåndteringsmanifest kan legges til i fremtidige utgaver.

Se også:

  • FAQ Aspose.Slides FOSS for C++
  • Hvordan lese MSG filer i C ++
  • Hvordan konvertere EML til MSG i C++
  • Aspose.Email FOSS for C++ på GitHub
 Norsk