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.gitadd_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.