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)PerpanjanganBacalah.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.


Memulai