شروع به کار با هدف. ایمیل FOSS برای یک C ++

شروع به کار با هدف. ایمیل FOSS برای یک 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.

پس 1 کلونر به پروژه خود اضافه کنید

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 Llegeix el fitxer 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() نگاه کنين به اين که چه اتفاقي افتاده. نیازی به نصب آن در Microsoft Outlook نیست.


استامپ 3 ایجاد یک فاکتور جدید MSG

استفاده: mapi_message::create() ساخت یک پیام در حافظه، یک وظیفه برای فرستنده و گیرنده وولار i gravar en دیسک c 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() “ریسیو دی لا روتا آ ال آرشیو” ، i std::ostream,، o استدلال های حس (بازگشت یک std::vector<std::uint8_t>).


Стъпка 4 Preformació en EML в MSG (i al revés) در مورد این موضوع بحث می کنیم.

Зареждане на файл EML با: mapi_message::load_from_eml(),بعد از اينکه به صورت سريالي پخش شد 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 input("file.msg") حس کردن std::ios::binary این می تواند یک خطای ویندوز ایجاد کند که به CFB ها آسیب برساند. پیشگام. std::ios::binary در قطار ورود و خروج.

خطای لینک: AsposeEmailFoss::AsposeEmailFoss نه قصدش نبود. اينو چک کن. add_subdirectory(Aspose.Email-FOSS-for-Cpp) se poëвява преди (se’n va aparèixer abans) se پاوئوا قبل (سئو به ظاهر شدن قبل از آن) target_link_libraries(...) در لا ساوارا CMakeLists.txt,، که اسم زیرمديريت ها است این دقیقاً همان چیزی است که با کلاناسیون کاغذ اتفاق می افتد.

C++17 شامل نشده است. کتابخانه نیاز به C++17 دارد. اگر کامپایلر خطاها را اعلام کند درباره ساختار روابط std::filesystem,، آگهر: set(CMAKE_CXX_STANDARD 17) در دل “ا لا ساوما”. CMakeLists.txt داده های قبلی add_subdirectory -گفتار کن .

- چرا نه؟?. برخی از فکسرها MSG متن را در یک یونیکد نگه می دارند. دیگر موارد استفاده از خصوصیات در صفحات کد ANSI است. message.subject() i c) message.body() که هیچ گونه خطر امنیتی وجود ندارد. message.html_body() si: message.body() اون یه مادربزرگه.

load_from_eml . “ساکابا” از شکلش جدا شده. مطمئن شو که فايستش خوبه 5322 کتابخونه بدون گذرگاه تابلوهای تغییر شکل.

فرکانس سوالات

آیا کتابخانه نیاز به Microsoft Outlook یا یک جزء COM دارد؟?

نه. FOSS برای C++ از پارسرهای خود CFB استفاده می کند و به سایت های ثالث وابسته نیست. در لینوکس، macOS و ویندوز Outlook نصب شده است.

چه شکلي مي تونم بخونم و بنويسم؟?

MSG (Messatge Outlook) ، EML (5322) و CFB (Compound File Binary) هم برای خواندن پشتیبانی می کنند، همچنین برای نوشتن. TNEF (winmail.dat),IMAP, SMTP i POP3 هیچ اشتراک نیست.

چطور می تونیم یه پیام رو بایت نگه داریم به جای اینکه اونو در فاکتور قرار بدیم؟?

-گفتار کن . save() o سایر موارد: save_to_eml() دوتا از اونها برگشتند. std::vector<std::uint8_t>,که می تونه به هر نوع آستانه یا جریانی بنویسد.

چه استانداردی در C++ لازم هست؟?

C++17 Bibliotekata utiliza کتاب های انگلیسی std::filesystem, std::optional, و سایر C++17 GCC 9+, Clang 10+ i MSVC 2019+ са изброени като поддържани в پروژه README.

آیا شما یک پبلک در مدیریت بسته (vcpkg، Conan) دارید؟?

نسخه 0.1.0 به صورت خودکار توسط فونت توزیع می شود. کلیک کنید در ذخیره سازی ابزارها add_subdirectory این طرح در آینده نیز قابل استفاده خواهد بود. “آزاد کردن”.

همچنین می بینید:

 فارسی