התחל עם מטרה. דואר אלקטרוני 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 .


-תודה, אדוני. אני לא יכול לעשות את זה.

כולל: 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() יצירת הודעה במזינה, משימה עבור שליח ולקבל. וולאר אני מצייר על דיסק 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() “הרישיו של לא רוטא באל ארכיון”, אני std::ostream,, , o ה استدلال های حس (חזרה 1 std::vector<std::uint8_t>).


אמצעי 4 של ההפקה ב EML (במקור) על נושא זה אנחנו מדברים.

Загрузка файл EML ב: mapi_message::load_from_eml(),לאחר שהסרטון שלי פורסם, save().دربرابر یک آرشیو از اشیاء، متن ساده در HTML-تئامیک.., שליח, מקבל וAPP:

#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 paawئوا قبل (سئو به ظاهر شدن לפני מראש آن) target_link_libraries(...) דאר לא סווארה CMakeLists.txt, כי אני תחת הניהול שלה. זה בדיוק מה שקורה עם הודעה על נייר.

C++17 شامل نشده است. کتابخانه نیاز به C++17 دارد. اگر کامپایلر خطاها را اعلام کند אודות מבנה קישורים std::filesystem,, עוד: set(CMAKE_CXX_STANDARD 17) דל לב “לא סאומה”. CMakeLists.txt נתונים קודמים add_subdirectory -מדברת.

-למה לא??. برخی از فکسرها MSG متن را در یک یونیکد نگه می دارند. دیگر موارد استفاده از خصوصیات در صفحات کد ANSI است. message.subject() (א) message.body() כי אין שום סיכון ביטחוני. message.html_body() אם: message.body() היא אמו של ברג’ר.

load_from_eml .“סאקابا” מפורסם. אני מרוצה מהצג. ספרים ללא מעבר. תוויות שינוי צורה.

פרקונס שאלות

האם הספרייה צריכה את 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 libros های انگلیسی ספרים באנגלית std::filesystem, std::optional, و سایر C++17 GCC 9+, Clang 10+ i MSVC 2019+ са изброени като поддържани в پروژه README.

האם יש לך פיקד ב-VCPKG, קונאן?

גרסה 0.1.0 באופן אוטומטי באמצעות הפונטים. הקליקו על כלי האחסון שלה add_subdirectory כך גם בעתיד יהיה אפשר להשתמש בו. “חופש”.

גם אתה רואה:

 עברית