Kaip sukurti elektroninio pašto pranešimą C++

Kaip sukurti elektroninio pašto pranešimą C++

Aspose.Email FOSS for C++ lets you compose fully structured Outlook MSG files in code Naudojimas mapi_message::create().Galite nustatyti temą, plokščių tekstą ir HTML kūnus, siųsti tapatybę, gavėjus ir išsaugoti rezultatą MSG arba EML su vienu skambučiu - Nereikalaujama „Outlook“ įrengimo.

1 žingsnis – projektuoti projektą

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 žingsnis – sukurti pranešimą ir nustatyti dalyką ir kūną

mapi_message::create() priima temą ir plokščių tekstą kaip statybininką Argumentai yra:

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

Po to, kai sukūrėte, galite atnaujinti temą ar kūną per set_subject() ir set_body():

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

3 žingsnis – Sustabdykite siuntėjo savybes

Naudojimas set_sender_name() ir set_sender_email_address() Pateikiamas siuntėjas.lt Adresų tipas yra SMTP išmatuojamas; perkelti jį su set_sender_address_type() Jei Reikalingi :

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

4 žingsnis – pridėti receptorius

add_recipient() siunčiamas pranešimas, kuris skambina vieną kartą per gavėją:

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

5 žingsnis – sukurkite HTML kūną

Naudojimas set_html_body() HTML versijos įrašymas pranešimo kūno. abiejų plokščių tekstas ir HTML kūnai gali bendrauti; el. pašto klientai pasirenka turtingesnį formatą:

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 žingsnis – išsaugoti MSG

save() siurblys pranešimą į Outlook MSG formatu. paspauskite std::filesystem::path rašyti tiesiai į diską, o std::ostream per srovės išleidimą arba skambinti su ne argumentas, kad gautų 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();
}

7 žingsnis – išsaugoti EML

Naudojimas save_to_eml() RFC 5322 / MIME failą gaminti vietoj MSG. perkraunamieji (path, stream arba bytai) yra prieinami:

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

Bendros problemos ir fiksacijos

Pranešimas išsaugotas, bet „Outlook“ rodo užkandžius tekstus. Įsitikinkite, kad žinutė yra sukurta su Unicode string palaikymas. mapi_message::create() Unicode juostų įdiegimas pagal numatytuosius. Jei reikia priversti ANSI kodavimą ( retai būtinas), eikite į false Kaip trečioji Argumentai yra: mapi_message::create(subject, body, false).

save() Šaltinis yra tuščias arba korumpuotas. Visada atviri išleidimo srautai su std::ios::binary.Teksto režimo srautai verčia naujienas „Windows“, iškraipydami Dvejetainis CFB struktūra.

Priėmėjai, kurie neatsiranda „To/Cc“ lauke programoje Outlook. Žmogusadd_recipient() Addis į MAPI gavėjų lentelėje. papildomai nustatykite display_to MAPI Nuosavybės per set_property() su common_message_property_id::display_to ir property_type_code::ptyp_string „Outlook“ rodo pavadinimus antraštėje.

HTML kūnas nėra atnaujintas. patvirtinkite, kad HTML juostelė yra gerai suformuota su atvirumu ir Uždarymas <html><body> Taip pat patikrinti, kad gaunamas klientas palaiko HTML el. Laišką; kai kurie Mažieji klientai pateikia tik aiškų tekstą.

set_internet_message_id() Jis neturi poveikio. Žmogusset_internet_message_id() Įveskite į MAPI internetinis pranešimo ID naudojamas šifravimui. ši nuosavybė yra atvirkštinė ir nereikalinga Įvertinti galiojančią MSG failą.

Dažnai užduodami klausimai

Koks yra paprasčiausias būdas sukurti MSG failą?

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

Ar galiu sukurti pranešimą, kuriame yra tik HTML kūnas ir nėra plokščių tekstų kūno?

Taip, skambinkite mapi_message::create(subject, "") kad plokščių tekstas kūno tuščia, tada Kvietimas set_html_body() Įveskite HTML turinį.

Kaip nustatyti pranešimo klasę?

Naudojimas set_message_class() MAPI žinutės klasės juostą, pavyzdžiui, "IPM.Note" Norėdami gauti standartinį el. Laišką:

message.set_message_class("IPM.Note");

Ar galiu nustatyti Interneto pranešimo ID, kad būtų galima ištrinti?

Taip, skambinkite set_internet_message_id() RFC 2822 formatu žinutės ID juostelis:

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

Ar Unicode įjungtas pagal numatytuosius nustatymus?

Dviejų argumentų forma mapi_message::create(subject, body) Unicode įdiegimas Norėdami sukurti paveldėjimo ANSI pranešimą, eikite false Kaip trečioji argumentas.

Taip pat žiūrėkite

 Lietuvių