התחל עם מטרה. דואר אלקטרוני 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.gitDodajte 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