Hvordan man laver en e-mail i C++
Aspose.Email FOSS for C++ lets you compose fully structured Outlook MSG files in code brug af mapi_message::create().Du kan indstille emnet, plaintext og HTML-legemer., sender identitet, modtagere og gemme resultatet til MSG eller EML med et enkelt opkald ingen Outlook-installation kræves.
Trin 1 Opstart af 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)Trin 2 Oprette et budskab og indsæt emne og krop
mapi_message::create() accepterer emnet og det plaintext-legeme som konstruktor argumenter:
#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 oprettelsen kan du også opdatere emnet eller kroppen via set_subject() og: set_body():
message.set_subject("Revised: Quarterly Status Update");
message.set_body("Updated body text.");Trin 3 Angiv senderegenskaber
Anvendelse: set_sender_name() og: set_sender_email_address() at identificere afsenderen. Adressetype er: SMTP som standard; overskrive det med set_sender_address_type() hvis: nødvendige:
message.set_sender_name("Build Agent");
message.set_sender_email_address("build.agent@example.com");Trin 4 Tilføj modtagere
add_recipient() Tilføj en modtager til meddelelsen. Ring én gang pr. modtager:
message.add_recipient("alice@example.com", "Alice Example");
message.add_recipient("bob@example.com", "Bob Example");Trin 5 Sæt et HTML-legeme
Anvendelse: set_html_body() at gemme en HTML-version af meddelelsens krop. Begge plaintext og HTML-legemer kan sameksistere; e-mailklienter vælger det rigere 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>");Trin 6 Gem til MSG
save() Serialiser beskeden til Outlook MSG format. Pass en std::filesystem::path at skrive direkte til disk, og std::ostream for strømudgang eller opkald uden argumenter for at modtage 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();
}Trin 7 Gem til EML
Anvendelse: save_to_eml() at producere en RFC 5322 / MIME fil i stedet for MSG. De samme tre Overbelastninger (baner, strømme eller byte) er tilgængelige:
#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"));
}Almindelige problemer og løsninger
Melding gemt, men Outlook viser forvrænget tekst. Sørg for, at meddelelsen er oprettet med Unicode-stringstøtte. mapi_message::create() aktiverer Unicode-strenge som standard. Hvis du skal tvinge ANSI-kodning (selv sjældent nødvendigt), passerer false som den tredje argument: mapi_message::create(subject, body, false).
save() Strømudgangen er tom eller beskadiget. Altid åbne udgangsstrømme med std::ios::binary.Tekst-mode streams oversætter nylinjer på Windows, og ødelægger den binær CFB-struktur.
Modtagere, der ikke vises i feltet Til/Cc i Outlook. Øvrigeadd_recipient() tilføjer: Indtast en liste over modtagere til MAPI-modtagertabel. display_to MAPI ejendom via set_property() med: common_message_property_id::display_to og: property_type_code::ptyp_string Så Outlook viser navne i overskriften.
HTML-legemet er ikke renderet. Bekræft HTML-strengen er velformet med åbning og Afslutning af proceduren <html><body> Tag. Verificere også modtagerklienten understøtter HTML e-mail; nogle Minimal klientudgave af kun almindelig tekst.
set_internet_message_id() har ingen virkning. Øvrigeset_internet_message_id() fastsætter den MAPI internetmeddelelses ID, der bruges til at trykke. Denne egenskab er valgfri og ikke påkrævet for en gyldig MSG-fil.
Ofte stillede spørgsmål
Hvad er den enkleste måde at oprette 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 jeg oprette en besked med kun et HTML-legeme og ingen plain text legem?
Ja, ring. mapi_message::create(subject, "") at lade den almindelige tekst være tom, så opkald set_html_body() at indstille HTML-indholdet.
Hvordan indstiller jeg meddelelsesklassen?
Anvendelse: set_message_class() med f.eks. MAPI-meddelelsklassestrengen, "IPM.Note" for en standard e-mail:
message.set_message_class("IPM.Note");Kan jeg indstille Internet-meddelelsessagen til at blive sendt?
Ja, ring. set_internet_message_id() med en RFC 2822-format beskedsidekode:
message.set_internet_message_id("<msg-001@example.com>");Er Unicode aktiveret som standard?
Ja, to argumenter i form af: mapi_message::create(subject, body) gør det muligt at bruge Unicode For at oprette en gammel ANSI-meddelelse, skal du indsende: false som det tredje argument.