Pengantar
Bekerja dengan file Outlook MSG dalam C++ secara historis membutuhkan otomatisasi COM Windows saja atau perpustakaan pihak ketiga berat dengan lisensi yang membatasi. Aspose.Email FOSS untuk C ++ mengubah bahwa: ini adalah perpustakahan C + 17 murni tanpa ketergantungan eksternal, tidak ada COM, dan tidak memiliki kode khusus platform. Ini dibangun identik pada Linux, macOS, and Windows.
Perpustakaan ini dirilis di bawah lisensi MIT dan didistribusikan sebagai sumber melalui GitHub. Anda mengintegrasikannya dengan menyalin repositori dan menambahkannya sebagai subdirektori CMake tidak diperlukan pendaftaran manajer paket, dan tidak perlu biner yang dibuat sebelumnya.
Posting ini berjalan melalui alur kerja inti: membaca file MSG yang ada, memeriksa sifatnya, membuat pesan baru secara programatis, dan melakukan perjalanan bolak-balik antara format MS G dan EML.
Fitur Utama
Membaca File MSG yang Ada
Penggunaan msg_reader untuk membuka sebuah .msg file dan msg_document untuk mengakses konten terstrukturnya. Kedua kelas tinggal di aspose::email::foss::msg ruang nama.
#include "aspose/email/foss/msg/msg_reader.hpp"
#include "aspose/email/foss/msg/msg_document.hpp"
#include <filesystem>
namespace aef = aspose::email::foss;
auto reader = aef::msg::msg_reader::from_file(std::filesystem::path("message.msg"));
auto document = aef::msg::msg_document::from_reader(reader);
msg_reader juga memiliki from_stream overload untuk membaca dari sebuah std::istream, yang berguna di sisi server atau konteks pipeline dimana file tidak hadir pada disk.
Buat Pesan Secara Programmatic
mapi_message::create menghasilkan pesan baru dalam memori dengan subjek dan tubuh. Anda kemudian dapat mengatur rincian pengirim, menambahkan penerima, dan melampirkan binary atau teks payloads sebelum Menyimpan.
#include "aspose/email/foss/msg/mapi_message.hpp"
namespace aef = aspose::email::foss;
auto msg = aef::msg::mapi_message::create(
"Quarterly status update",
"Hello team,\n\nPlease find the rollout summary attached.\n\nRegards");
msg.set_sender_name("Build Agent");
msg.set_sender_email_address("build.agent@example.com");
msg.add_recipient("alice@example.com", "Alice Example");
msg.save(std::filesystem::path("output.msg"));
Mengkonversi MSG menjadi EML
mapi_message mendukung konversi langsung MSG-EML melalui sistem transmisi yang lebih baik. save_to_eml metode. Keluar EML sesuai dengan RFC 5322 (MIME), membuatnya kompatibel dengan setiap standar mail, dan dapat digunakan untuk semua jenis email. klien atau pipa pengolahan.
auto loaded = aef::msg::mapi_message::from_file(
std::filesystem::path("message.msg"), /*strict=*/false);
// Save as EML to a file
loaded.save_to_eml(std::filesystem::path("message.eml"));
// Or capture as bytes
std::vector<std::uint8_t> eml_bytes = loaded.save_to_eml();
Beban dari EML
Arah kebaliknya sama mudahnya: load_from_eml membaca file EML dan menghasilkan sebuah mapi_message dalam memori, yang kemudian dapat disimpan kembali ke MSG.
auto from_eml = aef::msg::mapi_message::load_from_eml(
std::filesystem::path("message.eml"));
from_eml.save(std::filesystem::path("restored.msg"));
Akses CFB Tingkat Rendah
Untuk kasus penggunaan lanjutan seperti membaca sifat MAPI mentah yang tidak terpapar oleh API tingkat tinggi cfb_reader memberikan akses langsung ke kontainer Kompound File Binary yang mendukung format MSG.
#include "aspose/email/foss/cfb/cfb_reader.hpp"
namespace aef = aspose::email::foss;
auto cfb = aef::cfb::cfb_reader::from_file(std::filesystem::path("message.msg"));
auto storage_ids = cfb.storage_ids();
auto stream_ids = cfb.stream_ids();
Memulai dengan cepat
Langkah 1 Klon dan Tambahkan sebagai Subdirektori
git clone https://github.com/aspose-email-foss/Aspose.Email-FOSS-for-Cpp.git
Dalam proyek Anda. CMakeLists.txt:
cmake_minimum_required(VERSION 3.26)
project(my_project)
add_subdirectory(Aspose.Email-FOSS-for-Cpp)
add_executable(my_app main.cpp)
target_link_libraries(my_app PRIVATE AsposeEmailFoss::AsposeEmailFoss)
Langkah 2 Masukkan dan Gunakan
#include <iostream>
#include "aspose/email/foss/msg/mapi_message.hpp"
namespace aef = aspose::email::foss;
int main()
{
// Create a message
auto msg = aef::msg::mapi_message::create("Hello from C++", "Body text here");
msg.save(std::filesystem::path("hello.msg"));
// Round-trip to EML
auto loaded = aef::msg::mapi_message::from_file(
std::filesystem::path("hello.msg"), false);
loaded.save_to_eml(std::filesystem::path("hello.eml"));
std::cout << "Done\n";
}
Langkah 3 Membangun
cmake -B build -DCMAKE_BUILD_TYPE=Release
cmake --build build
Format yang Didhukung
| Format (Inggris) | Perpanjangan | Bacalah. | Menulis |
|---|---|---|---|
| MSG (Pesan Outlook) | .msg | ✓ | ✓ |
| EML (RFC 5322 / MIME) | .eml | ✓ | ✓ |
| CFB (Compound File Binary) | .msg, .cfb | ✓ | ✓ |
Open Source & Lisensi
Aspose.Email FOSS for C++ is released under the MIT license. The full source is available di GitHub pada: Aspose-email-foss/Aspose.Email-FOSS-untuk-Cpp. Penggunaan komersial diizinkan tanpa royalti. Perpustakaan tidak memiliki ketergantungan runtime di luar C++17 compiler dan CMake 3.26 atau lebih baru.