Kā izveidot e-pasta ziņojumu C++ valodā

Kā izveidot e-pasta ziņojumu C++ valodā

Aspose.Email FOSS for C++ lets you compose fully structured Outlook MSG files in code izmantojot mapi_message::create(). Jūs varat iestatīt tematu, vienkāršo tekstu un HTML ķermeņus, nosūtītāja identitāti, saņēmējus un saglabāt rezultātu kā MSG vai EML ar vienu izsaukumu — nav nepieciešama Outlook instalācija.

1. solis — Iestatiet projektu

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. solis — Izveidojiet ziņojumu un iestatiet tematu un ķermeni

mapi_message::create() pieņem tematu un vienkāršo teksta ķermeni kā konstruktoru argumentus:

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

Pēc izveides jūs varat arī atjaunināt tematu vai ķermeni, izmantojot set_subject() un set_body():

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

3. solis — Iestatiet sūtītāja īpašības

Izmantojiet set_sender_name() un set_sender_email_address() lai identificētu sūtītāju. Tas adrese tips ir SMTP pēc noklusējuma; pārrakstiet to ar set_sender_address_type() ja nepieciešams:

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

Solis 4 — Pievienot saņēmējus

add_recipient() pievieno saņēmēju ziņai. Izsauciet to vienreiz katram saņēmējam:

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

Solis 5 — Iestatīt HTML ķermeni

Izmantojiet set_html_body() lai saglabātu HTML versiju ziņas ķermenim. Gan vienkāršais teksts un HTML ķermeņi var pastāvēt kopā; e-pasta klienti izvēlas bagātāko formātu:

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

Solis 6 — Saglabāt kā MSG

save() serializē ziņu uz Outlook MSG formātu. Nododiet a std::filesystem::path rakstīt tieši uz disku, vienu std::ostream plūsmas izvadei, vai izsaukt bez argumentus, lai saņemtu 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();
}

Solis 7 — Saglabāt kā EML

Izmantot save_to_eml() lai izveidotu RFC 5322 / MIME failu, nevis MSG. Tās pašas trīs pārlādējumi (ceļš, plūsma vai baiti) ir pieejami:

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

Biežāk sastopamās problēmas un to novēršana

Ziņojums saglabāts, bet Outlook rāda saplēstu tekstu. Pārliecinieties, ka ziņojums tiek izveidots ar Unicode virkņu atbalstu. mapi_message::create() pēc noklusējuma iespējo Unicode virknes. Ja jums ir jāuzspiež ANSI kodējums (reti nepieciešams), nododiet false kā trešais arguments: mapi_message::create(subject, body, false).

save() plūsmas izvade ir tukša vai bojāta. Vienmēr atveriet izvades plūsmas ar std::ios::binary. Teksta režīma plūsmas pārtulko jaunu rindas rakstzīmes Windows, bojājot bināro CFB struktūru.

Saņēmēji neparādās Laukā To/Cc Outlook. add_recipient() pievieno saņēmējus MAPI saņēmēju tabulā. Papildus iestatiet display_to MAPI īpašību, izmantojot set_property() ar common_message_property_id::display_to un property_type_code::ptyp_string tādējādi Outlook parāda vārdus galvenē.

HTML ķermenis nav attēlots. Apstipriniet, ka HTML virkne ir pareizi veidota ar atvēršanas un aizvēršanas <html><body> tagus. Arī pārbaudiet, vai saņemšanas klients atbalsta HTML e-pastu; daži minimālie klienti attēlo tikai vienkāršu tekstu.

set_internet_message_id() nav ietekmes. set_internet_message_id() iestata MAPI interneta ziņojuma ID, ko izmanto pavedienu veidošanai. Šī īpašība ir izvēles, un nav obligāta derīgam MSG failam.

Biežāk uzdotie jautājumi

Kāds ir vienkāršākais veids, kā izveidot MSG failu?

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

Vai es varu izveidot ziņojumu tikai ar HTML ķermeni un bez vienkārša teksta ķermeņa?

Jā. Zvaniet mapi_message::create(subject, "") lai atstātu vienkāršā teksta ķermeni tukšu, tad izsauc set_html_body() lai iestatītu HTML saturu.

Kā iestatīt ziņojuma klasi?

Izmantojiet set_message_class() ar MAPI ziņojuma klases virkni, piemēram "IPM.Note" standarta e-pasta ziņojumam:

message.set_message_class("IPM.Note");

Vai es varu iestatīt Internet Message-ID pavediena veidošanai?

Jā. Izsauc set_internet_message_id() ar RFC 2822 formāta ziņojuma ID virkni:

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

Vai Unicode ir ieslēgts pēc noklusējuma?

Jā. Divu argumentu forma mapi_message::create(subject, body) iespējo Unicode virknes. Lai izveidotu mantoto ANSI ziņojumu, nodod false kā trešais arguments.

Skatīt arī

 Latviešu