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.gitAdjunta 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.