Hogyan készítsünk e-mail üzenetet C++

Hogyan készítsünk e-mail üzenetet C++

Aspose.Email FOSS for C++ lets you compose fully structured Outlook MSG files in code használata mapi_message::create().A témát, a tiszta szöveget és a HTML-testeket beállíthatja, a feladó személyazonosságát, a címzetteket és az eredményt egyetlen hívással mentse el MSG-re vagy EML-be – Outlook telepítés nem szükséges.

1. lépés - A projekt beállítása

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)

2. lépés: Üzenet létrehozása és Tárgy és Test beállítása

mapi_message::create() elfogadja a tárgyat és a tiszta szöveg testét mint konstruktort Az érvek:

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

auto message = aspose::email::foss::msg::mapi_message::create(
    "Quarterly Status Update",
    "Hello team,\n\nPlease find the summary below.\n\nRegards,\nEngineering");

A létrehozás után a témát vagy testet is frissítheti az alábbi linken keresztül: set_subject() és set_body():

message.set_subject("Revised: Quarterly Status Update");
message.set_body("Updated body text.");

3. lépés - A küldő tulajdonságok beállítása

használja set_sender_name() és set_sender_email_address() A küldő azonosítása: a A cím típusát a SMTP A fentiek alapján; a fentebb említett set_sender_address_type() Ha Szükség van:

message.set_sender_name("Build Agent");
message.set_sender_email_address("build.agent@example.com");

4. lépés - Adjon hozzá címzettet

add_recipient() Az üzenethez csatolja a címzettet. Egyszer hívja fel az ügyletet:

message.add_recipient("alice@example.com", "Alice Example");
message.add_recipient("bob@example.com", "Bob Example");

5. lépés: HTML test beállítása

használja set_html_body() az üzenet testének HTML-verzióját tárolja. mind a tiszta szöveg, mind A HTML-testek együttesen létezhetnek, az e-mail kliensek a gazdagabb formátumot választják:

message.set_html_body(
    "<html><body>"
    "<p>Hello team,</p>"
    "<p>Please find the <b>quarterly summary</b> below.</p>"
    "<p>Regards,<br>Engineering</p>"
    "</body></html>");

6. lépés - Mentse az MSG-re

save() Az üzenet soros formátumban kerül az Outlook MSG-be. std::filesystem::path A lemezre való felvételhez, egy std::ostream a stream kimeneti, vagy hívás nélkül Az érvek a std::vector<std::uint8_t>:

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

int main()
{
    auto message = aspose::email::foss::msg::mapi_message::create(
        "Meeting Notes", "Details inside.");
    message.set_sender_name("Alice");
    message.set_sender_email_address("alice@example.com");
    message.add_recipient("bob@example.com", "Bob");

    // Save to file path
    message.save(std::filesystem::path("meeting_notes.msg"));

    // Save to stream
    std::ofstream out_stream("meeting_notes_stream.msg", std::ios::binary);
    message.save(out_stream);

    // Save to bytes in memory
    auto bytes = message.save();
}

Lépés 7 – Mentse EML

használja save_to_eml() Az RFC 5322/MIME fájl előállításához az MSG helyett. A túlterhelések (út, áram vagy bájt) elérhetők:

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

int main()
{
    auto message = aspose::email::foss::msg::mapi_message::create(
        "Hello", "World");
    message.set_sender_name("Alice");
    message.set_sender_email_address("alice@example.com");
    message.add_recipient("bob@example.com", "Bob");

    message.save_to_eml(std::filesystem::path("hello.eml"));
}

Közös problémák és fixok

Az üzenet mentett, de az Outlook a törölt szöveget jeleníti meg. Az üzenet létrehozása a Unicode string támogatás. mapi_message::create() Az Unicode-sorozatot alapértelmezés szerint engedélyezzük. Ha ANSI kódolást kell kényszerítenie (ritkán szükséges), lépjen át a false Mint a harmadik Az érv: mapi_message::create(subject, body, false).

save() A stream kimenete üres vagy sérült. Mindig nyitott kimeneti áramlásokkal std::ios::binary.A szövegmódú áramok lefordítják a hírleveleket a Windows rendszerben, ami megrontja a Bináris CFB szerkezet.

A címzettek nem jelennek meg a To/Cc mezőben az Outlookban. Aadd_recipient() hozzáadása A címzett a MAPI-táblázatba kerül. továbbá beállítja a display_to MAPI Ingatlanok útján set_property() A common_message_property_id::display_to és property_type_code::ptyp_string Az Outlook a címsorban megjelenő neveket jeleníti meg.

HTML test nem renderelt. A HTML-sorozat jól megformált, a megnyitó és Zárás <html><body> A címkék. ellenőrizze a fogadó kliens támogatja a HTML e-mailt; néhány A minimális ügyfelek csak egyszerű szöveget jelenítenek meg.

set_internet_message_id() Nincs hatása . Aset_internet_message_id() Állítsa be a MAPI internetes üzenetazonosító, amelyet a szálakhoz használnak. Ez a tulajdonság opcionális és nem szükséges Egy érvényes MSG fájl.

Gyakran ismételt kérdések

Mi a legegyszerűbb módja az MSG fájl létrehozásának?

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

int main()
{
    auto message = aspose::email::foss::msg::mapi_message::create("Hello", "Body");
    message.set_sender_name("Alice");
    message.set_sender_email_address("alice@example.com");
    std::ofstream out("hello.msg", std::ios::binary);
    message.save(out);
}

Hozhatok létre egy üzenetet csak HTML-testtel és nem egyszerű szöveg testtel?

hívás - call mapi_message::create(subject, "") A szöveg testének üresen hagyása után a hívás set_html_body() A HTML tartalom beállítása.

Hogyan állíthatom be az üzenetosztályt?

használja set_message_class() A MAPI üzenetosztályú sorok segítségével például "IPM.Note" Egy standard e-mail üzenethez:

message.set_message_class("IPM.Note");

Beállíthatom az Internet üzenetazonosítót a szúráshoz?

hívás - call set_internet_message_id() RFC 2822 formátumú üzenetazonosító szál:

message.set_internet_message_id("<msg-001@example.com>");

Az Unicode alapértelmezés szerint engedélyezett?

A kétféle érv formája a mapi_message::create(subject, body) Unicode használata A legalizáláshoz, az ANSI üzenet létrehozásához false A harmadik érv.

Ezért is

 Magyar