Com començar amb Aspose.Email FOSS per a C++

Com començar amb Aspose.Email FOSS per a 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.

Pas 1 Clonar i afegir al seu projecte per a CMake

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

Adjunta la biblioteca com a subdirectòria i connecta-te amb la teva. CMakeLists.txt:

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

La biblioteca utilitza la mateixa biblioteca estàndard C++ i no depèn de tercers països. GCC 9+, Clang 10+ i MSVC 2019+ són comunicats com a suport en el projecte README .


Estampa 2 Llegeix el fitxer MSG

Inclou: mapi_message títol i obrir a un fitxer 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() mira el contenidor CFB en un fitxer MSG i exhibeix tot MAPI No és necessari instal·lar-lo en Microsoft Outlook.


Estampa 3 Creació d’un nou fitxer MSG

Utilització: mapi_message::create() Construir un missatge en memòria, una tasca a l’enviador i receptor Volar i gravar en disc c 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() Produïa un missatge en memòria. save() recepció de la ruta a l’arxiu, i std::ostream, o sense arguments (retorn a std::vector<std::uint8_t>).


Стъпка 4 Preformació en EML в MSG (i al revés)

Зареждане на файл EML с: mapi_message::load_from_eml(), després de ser serializada a MSG s save().Envoltar un arxiu d’objectes, simplement text i HTML-temàtics., El remitent, el receptor i l’aplicació:

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

Problemes i solucions comuns

El mode binari no està ajustat a la transmissió. Obertura de fitxer: std::ifstream input("file.msg") sense std::ios::binary Podria causar un error a Windows, que afectaria alguna CFB. Precurs. std::ios::binary per a trens d’entrada i sortida.

Error de Linker: AsposeEmailFoss::AsposeEmailFoss No és intencionat. Verifiqueu això. add_subdirectory(Aspose.Email-FOSS-for-Cpp) se poëвява преди (se’n va aparèixer abans) target_link_libraries(...) en la seva CMakeLists.txt, i que el nom del subdirectori és És exactament el que va passar amb la clonació del papert.

C++17 no està inclòs. La biblioteca requereix C++17 funcions. Si el compilador comunica errors sobre estructurats de relacions o std::filesystem, afegir: set(CMAKE_CXX_STANDARD 17) dins del A la seva cima. CMakeLists.txt anterior data de la add_subdirectory - Parla.

- Per què no?. Alguns fitxers MSG estan guardant text en propietats a Unicode. Els altres utilitzen propietats en pàgines de codis ANSI. message.subject() i c) message.body() que no hi hagi cap mena de seguretat; verificació message.html_body() si: message.body() És un gran.

load_from_eml S’acaba de desformar. Comproveu si el fitxer EML utilitza RFC 5322 Biblioteca no passa gratuïtament deformats títols.

Freqüència de preguntes

La biblioteca requereix Microsoft Outlook o un component COM?

No. FOSS per C++ utilitza el seu propi parser CFB i no depèn de tercers llocs. Treballa en Linux, macOS i Windows sense Outlook instal·lat.

Quins formats puc llegir i escriure?

MSG (Messatge Outlook), EML (5322) i CFB (Compound File Binary) se suportant tant per llegir, així i per escriure. TNEF (winmail.dat),IMAP, SMTP i POP3 no són subscrits.

Com guardar un missatge en bytes en comptes de fer-ho en fitxer?

  • Parla. save() o amb altres: save_to_eml() Els dos es van tornar. std::vector<std::uint8_t>,que pots escriure en qualsevol buffer o flux.

Quin estàndard en C++ és necessari?

C++17. Bibliotekata utiliza std::filesystem, std::optional, i altres C++17 GCC 9+, Clang 10+ i MSVC 2019+ са изброени като поддържани в projecte README.

Hi ha una publicació en gestor de paquets (vcpkg, Conan)?

Versió 0.1.0 és distribuïda automàticament per font. Clic en el repositori i utilitza add_subdirectory com s’ha mostrat més amunt. El manifèst de gestió del paquet es pot afegir en el futur L’alliberament.

Veure també:

 Català