Kako čitati MSG datoteke u C++

Kako čitati MSG datoteke u C++

Aspose.Email FOSS for C++ lets you open and parse Outlook MSG files with a single Funkcijski poziv. mapi_message::from_file() i u članku 1. mapi_message::from_stream() punjenje Potpuno poruku predmet, tijelo, pošiljatelj, primaoci i prilozi ?? u memoriju objekt bez Outlook ili COM ovisnosti.

Korak 1 Uspostavljanje projekta

Klonirati repozitorij i dodati ga na svoj CMakeLists.txt:

git clone https://github.com/aspose-email-foss/Aspose.Email-FOSS-for-Cpp.git
add_subdirectory(Aspose.Email-FOSS-for-Cpp)
target_link_libraries(your_target PRIVATE AsposeEmailFoss::AsposeEmailFoss)

Korak 2 Uključite naslov

#include "aspose/email/foss/msg/mapi_message.hpp"

Ovaj jedini zaglavlje pruža: mapi_message i sve podupirne vrste u aspose::email::foss::msg prostor imena.


Korak 3 Uplatiti poruku s puta datoteke

Upotreba: mapi_message::from_file() kada imate: std::filesystem::path:

#include <filesystem>
#include <iostream>
#include "aspose/email/foss/msg/mapi_message.hpp"

int main()
{
    const auto message = aspose::email::foss::msg::mapi_message::from_file(
        std::filesystem::path("sample.msg"));

    std::cout << "Subject: " << message.subject() << '\n';
    std::cout << "From:    " << message.sender_name()
              << " <" << message.sender_email_address() << ">\n";
    std::cout << "Body:    " << message.body() << '\n';
}

Korak 4 Uplatiti poruku iz streama

Upotreba: mapi_message::from_stream() da se analizira iz bilo kojeg std::istream korisno za: U slučaju da je to moguće, provjeravanje podataka u okviru sustava za upravljanje s podacima iz članka 4. stavka 1. točke (a) ili od strane korisnika koji se koristima za obavljanje operacija.:

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

Uvijek otvorite potok s: std::ios::binary Kako spriječiti Windows završetak redoslijeda Prevod iz pokvarenog CFB kontejnera.


Sljedeći članakSvijetlo:

message.recipients() vraća a std::vector od objekata primaoca, svaki s: display_name, email_address, i recipient_type polja:

#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);

    for (std::size_t i = 0; i < message.recipients().size(); ++i)
    {
        const auto& r = message.recipients()[i];
        std::cout << "[" << (i + 1) << "] "
                  << r.display_name << " <" << r.email_address << ">"
                  << " type=" << r.recipient_type << '\n';
    }
}

Korak 6 Iterirati prilozi

message.attachments() vraća a std::vector U tom slučaju, ne može se utvrditi da je to bilo moguće. izloženosti filename, mime_type, data (neizgrađeni bajtovi), content_id, i u skladu s člankom 73. stavkom 1. is_embedded_message() Predikat:

#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);

    for (std::size_t i = 0; i < message.attachments().size(); ++i)
    {
        const auto& a = message.attachments()[i];
        std::cout << "[" << (i + 1) << "] "
                  << a.filename << "  mime=" << a.mime_type
                  << "  bytes=" << a.data.size()
                  << "  embedded=" << (a.is_embedded_message() ? "yes" : "no")
                  << '\n';
    }
}

Česta pitanja i rješenja

Prazno. body() nakon utovarenja. Neke poruke čuvaju samo tekst u tijelu HTML-a. Čekajte. message.html_body() kad je to bilo? message.body() vraća prazan niz.

Povijek otvoren bez: std::ios::binary. Na Windows, tekst-mode tokovi prevoditi CRLF sekvence, tiho pokvariti binarne CFB podatke. Uvijek otvorite MSG datoteke s std::ios::binary.

msg_exception Bačen za valjan izgled datoteke. Potvrdite da je datoteka originalna MSG (OLE Compound File). Datoteke koje čuvaju neke alate za izvoz mogu biti običan tekst ili MIME i ne može biti analizirana od strane: mapi_message::from_file().

recipients() vraća prazan vektor. Starije MSG datoteke ponekad izostavljaju primatelja Tabla ali pohraniti prijemnike prikaza u display_to Pristup je preko: message.get_property_value() s: common_message_property_id::display_to i u članku 1. property_type_code::ptyp_string.

Veliki prilog podataka u memoriji. Sljedeći članak:mapi_message::from_file() i u članku 1. from_stream() Za velike datoteke, otvorite podložni kontejner s: msg_reader i provjeravanje priključnih tokova bez potpuno materijalizira ih.

Česta pitanja

Koja je razlika između: from_file() i u članku 1. from_stream()?

Oba stvaraju identičan rezultat. mapi_message -Ne, ne mogu. from_file() prihvaćaju: std::filesystem::path i otvara datoteku iznutra. from_stream() čita iz: bilo koji std::istream dajte korisno kada su MSG podaci već u memoriji ili Dolaze preko priključka.

Da li je? from_file() da ostavim datoteku otvorenu nakon učitavanja?

Ne, datoteka je otvorena, u potpunosti analizirana u memoriju i zatvorena prije nego što se otvori. from_file() Možete pomaknuti ili izbrisati izvorni datoteku odmah nakon poziva.

Mogu li čitati MSG datoteke kreirane Outlookom na macOS-u ili Linuxu?

Da. MSG format (OLE Compound File + MAPI svojstva) je prenosiv preko svih stranica operativni sustavi. .msg datoteka koja je proizvedena bilo kojom verzijom programa Outlook može se otvoriti. s: mapi_message::from_file().

Kako čitam HTML?

Zovi me. message.html_body().Ako je poruka stvorena samo u obliku teksta, Ovo vraća prazan niz. message.body() vraća tijelo u običnom tekstu.

Je li strog način podrazumijevano?

mapi_message::from_file(path, strict) i u članku 1. from_stream(stream, strict) prihvatiti i opcionalno strict Po predviđenju je: false, koji podnosi manje strukturne povrede. Odstupanja u stvarnom svijetu MSG datoteke.

Također pogledajte:

 Hrvatski