Hvordan man laver en e-mail i C++

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.git
add_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.

Se også:

 Dansk