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

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

Aspose.Email FOSS pre C++ je knižnica na čítanie a písanie súborov Outlook, správ EML a kontajnerov CFB. Nemá závislosť od tretích strán a vyžaduje len kompilátor C ++ 17 a CMake .

Vyzerá to ako…

Krok 1 Klonovať a pridať do projektu CMake

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

Pridajte knižnicu ako podkategóriu a prepojte ju do `CMakeLists.txt':

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

Knižnica používa iba štandardnú knižnicu C++ a nemá závislosť od tretích strán. GCC 9+, Clang 10+ a MSVC 2019+ sú podporované v projekte README .


Krok 2 Prečítajte si súbor MSG

Vkladajte nadpis mapi_message a otvorte súbor s názvom ゚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() analyzuje kontajner CFB súboru MSG a odhaľuje všetky vlastnosti MAPI pomocou typovaných prístupových metód. Nevyžaduje sa inštalácia programu Microsoft Outlook.


Krok 3 Vytvorte nový MSG súbor

Použite mapi_message::create() na vytvorenie správy v pamäti, nastavenie položiek odosielateľa a príjemcu a ukladanie do disku s ̋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() vytvára správu v pamäti. ̋save ((())∂ akceptuje cestu súboru, aˇstd::ostream∂ alebo žiadne argumenty (vráca sa ∂std::vectorstd::uint8_t∂).


Krok 4 Konvertacia EML na MSG (a späť)

Nahráva EML súbor s mapi_message::load_from_eml(), potom serializovať na MSG so ⌒save (())`. Vrátne zachováva predmet, prostý textový bod, vlastnosť HTML tela, odosielateľa, príjemcov a priložky:

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

Vyzerá to ako…


Bežné problémy a riešenia

Binárny režim nie je nastavený na streamu. Otvorenie súboru s std::ifstream vstupom (("file.msg") bez ⌒std::ios::binárny môže spôsobiť preklad koncového riadku systému Windows, ktorý poškodí kontajner CFB. Prejdite cez ヽ std::ios: binárne pre oba vstupné a výstupné prúdy.

Chybu v odkaze: AsposeEmailFoss::AsposeEmailFoss nenašiel. Overte, či sa názov podkategórie ̋add_subdirectory(Aspose.Email-FOSS-for-Cpp) ∂ nachádza pred názvom target_link_libraries ((…) ̨ vo vašom ⌒CMakeLists.txt̅ a či názov podsmernice presne zodpovedá klonovanému priečinku.

C++17 nie je povolené. Knižnica vyžaduje funkcie C ++ 17. Ak kompilátor hlásí chyby o štruktúrovaných väzbách alebo std::filesystem, pridajte ⌒set(CMAKE_CXX_STANDARD 17) na vrchole vášho ̋CMakeLists.txt pred volaním ∂add_subdirectory∂ .

Prázdny predmet alebo telo po čítaní. Niektoré MSG súbory ukladajú text v vlastnostiach Unicode, zatiaľ čo iné používajú vlastnosti ANSI kód-stránka. message.subject() a ̋messages.body (()⌒ vráť reťaz z akéhokoľvek uchovávania je prítomný; skontrolujte ∂messagem.html_(bodom)̅ ak je ゚messaging.bodím̅ prázdne.

load_from_eml vrhá na nesprávne formované EML. Overte, či súbor EML používa RFC 5322 koncových riadkov (CRLF) a má platné hlavičky MIME. Knižnica nevypustí chybne vytvorené hlavečky.

Často kladené otázky

Vyžaduje knižnica Microsoft Outlook alebo akúkoľvek komponentu COM?

Nie. Aspose.Email FOSS pre C++ používa vlastný CFB a MAPI analyzátor a nemá závislosť tretích strán. Pracuje na Linux, macOS a Windows bez inštalovaného programu Outlook .

Ktoré formáty môžem čítať a písať?

MSG (Outlook Message), EML (5322 / { PLACE HOLDR_3) a CFB (Compound File Binary) sú podporované pre čítanie aj písanie. TNEF (winmail.dat),IMAP, SMTP a POP3 nie sú podložené.

Ako uložiť správu do bajtov namiesto súboru?

` (save) ̋ alebo ∂ ( save_to_eml) () u bez argumentov. Oba vrátia ⌒std::vectorstd::uint8_t̅, ktoré môžete napísať do ľubovoľného bufera alebo prúdu.

Aký štandard C++ je potrebný?

C++17. Knižnica používa std::filesystem, ⌒std::optionalヽ a ďalšie funkcie štandardnej knižnice v jazyku C ++ 17. GCC 9+, Clang 10+ a MSVC 2019+ sú uvedené ako podporované v projekte README.

Existuje prepustenie správcu balíkov (vcpkg, Conan)?

Verzia 0.1.0 je distribuovaná len prostredníctvom zdroja. Klonovať úložište a používať add_subdirectory ako sa ukazuje vyššie. Manifesty správcu balíkov môžu byť pridané v budúcich vydaniach.

Pozri tiež:

  • FAQ Aspose.Slides FOSS pre C++
  • Ako čítať MSG súbory v C++
  • Ako konvertovať EML na MSG v C++
  • Aspose.Email FOSS pre C++ na GitHub
 Slovenčina