Hur man skapar ett e-postmeddelande i C++
Aspose.Email FOSS for C++ lets you compose fully structured Outlook MSG files in code Användning mapi_message::create().Du kan ställa in ämnet, plain-text och HTML kroppar, sända identiteten, mottagarna och spara resultatet till MSG eller EML med ett enda samtal - Ingen Outlook installation krävs.
Steg 1 – Ställ in projektet
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)Steg 2 – Skapa ett meddelande och ställa in ämne och kropp
mapi_message::create() accepterar ämnet och plain-textkroppen som konstruktör Argumenten är:
#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");Efter skapandet kan du också uppdatera ämnet eller kroppen via set_subject() och set_body():
message.set_subject("Revised: Quarterly Status Update");
message.set_body("Updated body text.");Steg 3 – Ställ in Senderegenskaper
Användning set_sender_name() och set_sender_email_address() att identifiera avsändaren. den Adresstyp är SMTP för att överdriva det; överlämna den med set_sender_address_type() Om Behöver det:
message.set_sender_name("Build Agent");
message.set_sender_email_address("build.agent@example.com");Steg 4 – Lägg till receptorer
add_recipient() ansluter en mottagare till meddelandet. ringa den en gång per mottagen:
message.add_recipient("alice@example.com", "Alice Example");
message.add_recipient("bob@example.com", "Bob Example");Steg 5 – Ställ in en HTML-kropp
Användning set_html_body() för att lagra en HTML-version av meddelandekroppen. båda plain-text och HTML-kroppar kan coexistera; e-postklienter väljer det rikaste formatet:
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>");Steg 6 – Spara till MSG
save() serierar meddelandet till Outlook MSG-format. pass en std::filesystem::path att skriva direkt till disk, en std::ostream för strömutgång, eller ringa med No Argument för att få en 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();
}Steg 7 – Spara till EML
Användning save_to_eml() att producera en RFC 5322 / MIME-fil istället för MSG. överladdningar (vägen, strömmen eller byterna) är tillgängliga:
#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"));
}Vanliga problem och fixar
Meddelandet sparas men Outlook visar smutsigt text. Se till att meddelandet skapas med Unicode strängstöd. mapi_message::create() Det är möjligt att använda Unicode strängar som standard. Om du behöver tvinga ANSI kodning (sällan nödvändigt), passera false Som den tredje Argumentet är: mapi_message::create(subject, body, false).
save() Strömproduktionen är tom eller korrupt. Alltid öppen utgång strömmar med std::ios::binary.Text-mode strömmar översätter nyheterna på Windows, korrupt binära CFB struktur.
Mottagare som inte visas i fältet To/Cc i Outlook. -här är detadd_recipient() tillägg mottagare till MAPI-mottagartabellen. ytterligare ställa in display_to MAPI Fastighet via set_property() med common_message_property_id::display_to och property_type_code::ptyp_string Så Outlook visar namn i header.
HTML inte är gjord. Bekräfta att HTML-strängen är välformad med öppning och Stängning <html><body> Kontrollera också att mottagaren stödjer HTML-e-post; några Minimi kunder ger endast tydlig text.
set_internet_message_id() har ingen effekt. -här är detset_internet_message_id() Sätter den MAPI Internet Message ID används för att streama. Denna egenskap är valfri och inte krävs För en giltig MSG-fil.
Ofta ställda frågor
Vad är det enklaste sättet att skapa en MSG-fil?
#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);
}Kan jag skapa ett meddelande med bara en HTML-kropp och ingen platt textkroppen?
Ja, ringa till mapi_message::create(subject, "") att lämna den platt-textkroppen tom, så ringer set_html_body() Att ställa in HTML-innehållet.
Hur ställer jag in meddelandeklass?
Användning set_message_class() med MAPI-meddelande klasssträng, till exempel "IPM.Note" För ett standard e-postmeddelande:
message.set_message_class("IPM.Note");Kan jag ställa in Internet Message-ID för att streama?
Ja, ringa till set_internet_message_id() med en RFC 2822-format meddelande ID-länk:
message.set_internet_message_id("<msg-001@example.com>");Är Unicode aktiverad som standard?
Den två argumenten form av mapi_message::create(subject, body) Tillåter Unicode strängar. för att skapa en arv ANSI meddelande, passera false som tredje argumentet.