Cara Memulai dengan Aspose.Email FOSS untuk 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.
Langkah 1 – Klon dan Tambahkan ke Proyek CMake Anda
git clone https://github.com/aspose-email-foss/Aspose.Email-FOSS-for-Cpp.gitTambahkan perpustakaan sebagai subdirektori dan tautan ke dalam CMakeLists.txt:
add_subdirectory(Aspose.Email-FOSS-for-Cpp)
target_link_libraries(your_target PRIVATE AsposeEmailFoss::AsposeEmailFoss)Perpustakaan ini hanya menggunakan perpustaka standar C++ dan tidak memiliki ketergantungan pihak ketiga. GCC 9+, Clang 10+, dan MSVC 2019+ dilaporkan didukung dalam proyek README.
Langkah 2 — Baca file yang ada
termasuk yang mapi_message header dan membuka file dengan 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() Menggunakan file yang berisi kode-kode dan mengekstrak semua konten. Cara Menggunakan Microsoft Outlook Tidak diperlukan instalasi.
Langkah 3 — Membuat file baru
Menggunakan mapi_message::create() Untuk membuat pesan dalam memori, set pengirim dan penerima. fields, dan menyimpan ke disk dengan 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() Menghasilkan pesan dalam memori. save() Menggunakan file path, a std::ostream, atau tidak ada argumen (mengembalikan a std::vector<std::uint8_t>).
Langkah 4 — Konversi EML ke MSG (dan Kembali)
Mengisi file dengan mapi_message::load_from_eml(),kemudian serialisasi ke MSG dengan save().• The round-trip menyimpan subjek, tubuh teks sederhana, HTML body property, Pengirim, penerima dan pengisi:
#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";
}Masalah umum dan fixes
Mode biner tidak diatur pada aliran. Membuka file dengan std::ifstream input("file.msg") tanpa std::ios::binary dapat menyebabkan terjemahan ujung baris Windows yang merusak CFB Kontainer yang berlalu std::ios::binary baik input maupun output.
Kesalahan kiri : AsposeEmailFoss::AsposeEmailFoss Tidak ditemukan. Periksa ini add_subdirectory(Aspose.Email-FOSS-for-Cpp) Terlihat sebelum target_link_libraries(...) Dalam kamu CMakeLists.txt,Dan nama subdirektorat tersebut adalah Sesuai dengan kloning yang tepat.
C++17 tidak diaktifkan. Perpustakaan membutuhkan fitur C++17. Jika kompilator melaporkan kesalahan dengan pengaturan struktur atau std::filesystem,dan tambahkan set(CMAKE_CXX_STANDARD 17) Pada the Top dari Anda CMakeLists.txt Sebelumnya The add_subdirectory Panggilan yang.
Subjek atau tubuh kosong setelah membaca. Beberapa file MSG menyimpan teks dalam properti Unicode Sementara yang lain menggunakan properti kode-halaman ANSI. message.subject() dan message.body() kembali dari mana saja penyimpanan hadir; periksa message.html_body() Jika message.body() Itu kosong.
load_from_eml Menggunakan alat yang tidak teratur. Periksa apakah file yang digunakan adalah EML 5322 CRLF (line endings) dan memiliki header yang valid MIME. perpustakaan tidak diam-diam melewatkan Kepala yang tertutup.
Pertanyaan yang Sering Diajukan
Apakah perpustakaan membutuhkan Microsoft Outlook atau komponen COM lainnya?
FOSS untuk C++ menggunakan CFB dan MAPI sendiri, dan tidak memiliki ketergantungan pihak ketiga. berfungsi pada Linux, macOS, serta Windows tanpa Outlook yang diinstal.
Format apa yang bisa saya baca dan tulis?
MSG (Outlook Message), EML (5322 / MIME) dan CFB (Compound File Binary) didukung untuk membaca dan menulis. TNEF (winmail.dat),IMAP,SMTP dan POP3 tidak didorong.
Bagaimana cara menyimpan pesan menjadi byte bukan file?
Panggilan save() atau save_to_eml() Tidak ada yang mengejutkan, keduanya kembali std::vector<std::uint8_t>, yang dapat Anda tulis ke buffer atau aliran apa pun.
Apa saja standar C++ yang diperlukan?
C++17 - Perpustakaan yang digunakan untuk std::filesystem, std::optional,dan lainnya C++17 GCC 9+, Clang 10+ dan MSVC 2019+ tercantum sebagai didukung di Proyek ini sudah dibaca.
Apakah ada rilis manajer paket (vcpkg, Conan)?
Versi 0.1.0 hanya didistribusikan melalui sumber. mengkloning repository dan gunakan add_subdirectory Seperti yang ditunjukkan di atas. manifesto manajer paket mungkin akan ditambahkan di masa depan dengan melepaskan.