目標の設定を始める. C++ のE-Mail FOSS

目標の設定を始める. C++ のE-Mail FOSS

Aspose.Email FOSS untuk C ++ adalah perpustakaan untuk membaca dan menulis fail Outlook, mesej, dan bekas CFB. Ia tidak mempunyai ketergantungan pihak ketiga dan hanya memerlukan pengkompiler C++17 dan CMake .

[pemilik tempat]

Langkah 1 Klon dan Tambah ke Projek CMake anda

git clone https://github.com/aspose-email-foss/Aspose.Email-FOSS-for-Cpp.git

Tambah pustaka sebagai subdirektori dan hubungkan ke dalam `CMakeLists.txt':

add_subdirectory(Aspose.Email-FOSS-for-Cpp)
target_link_libraries(your_target PRIVATE AsposeEmailFoss::AsposeEmailFoss)

Perpustakaan hanya menggunakan perpustakaan standard C ++ dan tidak mempunyai ketergantungan pihak ketiga. GCC 9+, Clang 10 +, dan MSVC 2019 + dilaporkan disokong dalam projek README .


Langkah 2 Baca fail MSG

Masukkan tajuk mapi_message dan buka fail 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() mengkaji bekas CFB fail MSG dan mendedahkan semua sifat MAPI melalui kaedah aksesor yang diketik. Tidak diperlukan pemasangan Microsoft Outlook.


Langkah 3 Buat fail baru MSG

Gunakan mapi_message::create() untuk membina mesej dalam memori, menetapkan penyampai dan penerima medan, dan simpan ke cakera 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 mesej dalam memori. ̋save ((())∂ menerima laluan fail, a ̈std::ostream∂, atau tiada argumen (mengembalikan sebuah ̈ ̈ std::vectorstd::uint8_t∂).


Langkah 4 Pindah EML ke MSG (dan Kembali)

Muat naik fail EML dengan mapi_message::load_from_eml(), kemudian serialize ke MSG with ⌒save (())`. Perjalanan pulang menyimpan subjek, badan teks biasa, sifat badan HTML, penghantar, penerima dan lampiran:

#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";
}

[pemilik tempat]


Masalah dan Penyelesaian yang lazim

Mod binari tidak ditetapkan pada aliran. Membuka fail dengan input std::ifstream("file.msg") tanpa ⌒std::ios::binary` boleh menyebabkan terjemahan akhir baris Windows yang merosakkan bekas CFB. Loloskan ヽ std::ios:binar̅ untuk kedua-dua aliran masuk dan keluar.

Kesalahan pautan: AsposeEmailFoss::AsposeEmailFoss tidak dijumpai. Periksa bahawa ⌒add_subdirectory(Aspose.Email-FOSS-for-Cpp) muncul sebelum ̋target_link_libraries ((...) dalam ∂CMakeLists.txt` anda, dan nama subdirektori sesuai dengan folder yang diklonkan.

C++17 tidak diaktifkan. Perpustakaan memerlukan ciri-ciri C ++ 17. Jika pengkompiler melaporkan ralat mengenai ikatan berstruktur atau std::filesystem, tambahkan ⌒set(CMAKE_CXX_STANDARD 17)` di bahagian atas CMakeLists.txt kamu sebelum panggilan ̋add_subdirectory∂ .

Subjek atau badan kosong selepas membaca. Sesetengah fail MSG menyimpan teks dalam sifat Unicode manakala yang lain menggunakan kod halaman ANSI. message.subject() dan ̋messages.body (()⌒ mengembalikan rentetan dari mana-mana penyimpanan yang ada; periksa ∂messagehttml_∂body (); jika ゚messaging. body ().∂ adalah kosong.

load_from_eml melemparkan pada EML. Periksa bahawa fail EML menggunakan RFC 5322 hujung baris (CRLF) dan mempunyai header MIME yang sah. Perpustakaan tidak dengan diam-diam melangkau heater yang salah bentuk.

Soalan yang Sering Ditanya

Adakah perpustakaan memerlukan Microsoft Outlook atau mana-mana komponen COM?

Tidak. Aspose.Email FOSS untuk C ++ menggunakan CFB dan MAPI parser sendiri dan tidak mempunyai ketergantungan pihak ketiga. Ia berfungsi pada Linux, macOS, dan Windows tanpa Outlook dipasang.

Format mana yang boleh saya baca dan tulis?

MSG (Mesej Outlook), EML (5322 / { PLACE HOLDR_3) dan CFB (Compound File Binary) disokong untuk membaca dan menulis. TNEF (winmail.dat),IMAP, SMTP dan POP3 tidak disyorkan.

Bagaimana saya menyimpan mesej ke byte dan bukannya fail?

Panggil () atau ̋save_to_eml ((())` tanpa argumen. Kedua-duanya mengembalikan ∂std::vectorstd::uint8_t∂, yang anda boleh tulis ke penyangga atau aliran apa pun.

Standard C++ apa yang diperlukan?

C++17. Perpustakaan menggunakan std::filesystem, ⌒std::optionalヽ dan ciri perpustakaan standard C ++ 17 yang lain. GCC 9+, Clang 10 +, dan MSVC 2019 + disenaraikan sebagai disokong dalam projek README .

Adakah terdapat pembebasan pengurus pakej (vcpkg, Conan)?

Versi 0.1.0 hanya diedarkan melalui sumber. Klon repositori dan gunakan add_subdirectory seperti yang ditunjukkan di atas. Manifest pengurus pakej mungkin ditambah dalam penerbitan masa depan.

Lihat juga:

  • FAQ Aspose.Slides FOSS untuk C++
  • Cara Membaca MSG Fail dalam C++
  • Cara menukar EML ke MSG dalam C++
  • Aspose.Email FOSS untuk C ++ di GitHub
 Bahasa Melayu