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

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

Aspose.Email FOSS สําหรับ C++ เป็นห้องสมุดสําหรับการอ่านและเขียนไฟล์ Outlook MSG, ข้อความ EML และคอนเทนเนอร์ CFB. มันไม่มีพึ่งพาจากฝ่ายที่สาม และต้องการเพียงแค่เครื่องสรรหาข้อมูล C ++ 17 และ CMake เท่านั้น

การแสดงภาพที่ไม่เป็นธรรมดา

ขั้นตอน 1 คลอนและเพิ่มไปยังโครงการ CMake ของคุณ

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

เพิ่มห้องสมุดเป็นรายการย่อยและเชื่อมต่อมันใน CMakeLists.txtของคุณ:

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

ห้องสมุดใช้เพียงห้องสมัครมาตรฐาน C++ และไม่มีการพึ่งพาของฝ่ายที่สาม. GCC 9+, Clang 10+ และ MSVC 2019+ ได้รับการสนับสนุนในโครงการ README .


ขั้นตอน 2 อ่านไฟล์ MSG

รวมหัวข้อ mapi_message และเปิดไฟล์ด้วย ゚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() แพร์สคอนเทนเนอร์ CFB ของไฟล์ MSG และเปิดเผยคุณสมบัติทั้งหมดของ MAPI โดยใช้วิธีการเข้าถึงที่เขียน. ไม่จําเป็นต้องติดตั้ง Microsoft Outlook


ขั้นตอน 3 สร้างไฟล์ใหม่ MSG

ใช้ mapi_message::create() เพื่อสร้างข้อความในจดจํา, กําหนดสนามผู้ส่งและผู้รับ และบันทึกไว้บนแผ่น disk ด้วย ⌒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()ผลิตข้อความในจดจํา. ̋save ((())∂ยอมรับเส้นทางไฟล์, a ゚std::ostream∂ หรือไม่มีอาร์กูเมนต์ (คืน a p∆ std::vector<pΔ3}>∂).


ขั้นตอน 4 แปลง EML เป็น MSG (และกลับ)

อัตราการอัดไฟล์ EML ด้วย mapi_message::load_from_eml(), แล้วเรียงเป็น MSG กับ ⌒save ((())`. การเดินทางกลับเก็บหัวข้อ, ตัวหลักลักษณะของคําเขียนแบบเรียบร้อย, คุณสมบัติตัวหลัก HTML, ผู้ส่ง,ผู้รับ และเอกสารแนบ:

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

การแสดงภาพที่ไม่เป็นธรรมดา


ปัญหา และ การ แก้ไข ที่ พบ กัน

รูปแบบไบนารีไม่ได้ตั้งค่าในสตรีม การเปิดไฟล์ที่มีการเข้า std::ifstream (("file.msg") ■ โดยไม่มีการออกสาย (?? std::ios::binary อาจทําให้คําแปลที่จบเส้นของ Windows ทําให้คอนเทนเนอร์ CFB เสียหายไป ย้ายผ่าน ⌒std::ios:: binaryヽ สําหรับทั้งทางเข้าและทางออก

ความผิดพลาดของลิงก์: AsposeEmailFoss::AsposeEmailFoss ไม่พบ ตรวจสอบว่า ⌒add_subdirectory ((Aspose.Email-FOSS-for-Cpp) “) มีหน้าก่อนที่ ヽtarget_link_libraries (゚…) 』 ใน CMakeLists.txt` ของคุณ และชื่อ subdirector ตรงกับโฟล์เดอร์ที่คลอนได้อย่างถูกต้อง

C++17 ไม่เปิด. ห้องสมุดต้องการ C ++ 17 คุณภาพ หากคอมพิลเลอร์รายงานความผิดพลาดเกี่ยวกับการผูกโครงสร้างหรือ std::filesystem, เพิ่มเติม ⌒set(CMAKE_CXX_STANDARD 17)゚ บนด้านบนของ CMakeLists.txtヽ ก่อนที่เรียก ▽add_subdirectory` .

หมดหัวข้อหรือร่างกายหลังจากอ่าน บางไฟล์ MSG สะกัดเท็กซ์ในลักษณะ Unicode ส่วนอื่นๆใช้ ลักษณ์ ANSI code-page. message.subject() และ ̋messages.body (()⌒ ย้อนรหัสจากที่เก็บใดก็ตาม; ตรวจสอบ ∂messaging.html_(body) ゙ หาก ゚messaged. body ()) ヽ เป็นเปล่า

load_from_eml โยงไปยัง EML. ยืนยันว่าไฟล์ EML ใช้ RFC 5322 สายท้าย (CRLF) และมีหัวข้อ MIME ที่ถูกต้อง ห้องสมุดจะไม่ลอยหัวหน้าที่ผิดรูปอย่างเงียบ.

คํา ถาม ที่ ตก บ่อย

ห้องสมุดต้องการ Microsoft Outlook หรือองค์ประกอบ COM ใด ๆ ไหม?

ไม่มี. Aspose.Email FOSS สําหรับ C++ ใช้ CFB และ MAPI พาร์เซอร์ของตัวเองและไม่มีการพึ่งพาจากบริษัทอื่น ๆ มันทํางานบน Linux, macOS และ Windows โดยไม่ต้องติดตั้ง Outlook

ผมสามารถอ่านและเขียนในรูปแบบไหน?

MSG (โหล่งข่าว Outlook), EML (5322 / { PLACE HOLDR_3) และ CFB (Compound File Binary) ได้รับการสนับสนุนทั้งในการอ่านและเขียน. TNEF (winmail.dat),IMAP, SMTP และ POP3 ไม่ได้รับการรองรับ.

วิธีการบันทึกข้อความเป็นไบต์ แทนที่จะเป็นไฟล์?

เรียก ` (save) ) หรือ ̋ Save_to eml ((() ∂ โดยไม่มีอาร์การ์ม ทั้งสองจะส่งกลับ ゚std::vectorstd::uint8_t ⌒ ซึ่งคุณสามารถเขียนไปยังพัฟเฟอร์หรือสตรีมใด ๆ ได้.

ต้องใช้มาตรฐาน C++ อะไร?

C++17 ห้องสมุดใช้ std::filesystem, ⌒std::optionalヽ และลักษณะห้องสมบัติมาตรฐานอื่นๆ ของภาษา C ++ 17 GCC 9+, Clang 10 + และ MSVC 2019+ ได้ถูกระบุว่าได้รับการสนับสนุนในโครงการ README.

มีการปล่อยผู้จัดการแพ็คเกจ (vcpkg, Conan) ไหม?

รุ่น 0.1.0 ถูกกระจายผ่านแหล่งที่ออกเท่านั้น. คลอนของคลังเก็บข้อมูลและใช้ add_subdirectory ตามภาพด้านบน. แพ็คเกจจัดการ manifests อาจถูกเพิ่มในรัลลิซภายหลัง.

ดูเช่นกัน

  • FAQ Aspose.Slides FOSS สําหรับ C++
  • วิธีอ่าน MSG ไฟล์ใน C++
  • วิธีการแปลง EML เป็น MSG ใน C++
  • Aspose.Email FOSS สําหรับ C++ บน GitHub
 ภาษาไทย