Cum să creați un mesaj de e-mail în C++

Cum să creați un mesaj de e-mail în C++

Aspose.Email FOSS for C++ lets you compose fully structured Outlook MSG files in code Utilizarea mapi_message::create().Puteți seta subiectul, corpul text simplu și HTML, identitatea expeditorului, a destinatarilor și salvați rezultatul la MSG sau EML cu un singur apel — Nu este necesară instalarea Outlook.

Pasul 1 – Crearea proiectului

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)

Pasul 2 – Creați un mesaj și setați subiectul și corpul

mapi_message::create() acceptă subiectul și corpul textului simplu ca constructor Argumentele :

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

După creare, puteți actualiza subiectul sau corpul prin intermediul set_subject() şi set_body():

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

Pasul 3 – Setarea proprietăților de trimitere

folosesc set_sender_name() şi set_sender_email_address() Pentru a identifica expeditorul, se Tipul de adresă este SMTP prin default; suprapunerea cu set_sender_address_type() Dacă Necesită :

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

Pasul 4 - Adăugați destinatari

add_recipient() Se adaugă un destinatar la mesaj. Apelați-l o dată pentru fiecare destinatare:

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

Pasul 5 – Setarea unui corp HTML

folosesc set_html_body() pentru a stoca o versiune HTML a corpului mesajului. ambele text simplu şi corpurile HTML pot coexista; clienţii de e-mail aleg formatul mai bogat:

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

Pasul 6 – Salvați la MSG

save() Se va serializa mesajul în format Outlook MSG. std::filesystem::path Pentru a scrie direct pe disc, un std::ostream pentru ieșirea în flux sau apel cu nu Argumente pentru a primi o 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();
}

Pasul 7 – Salvați la EML

folosesc save_to_eml() În schimb, se va produce un RFC 5322 / MIME în loc de MSG. supraîncărcări (path, stream sau bytes) sunt disponibile:

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

Probleme comune și soluții

Mesajul a fost salvat, dar Outlook afișează textul șters. Asiguraţi-vă că mesajul este creat cu Suport pentru Unicode String. mapi_message::create() Se activează prin implicit unicode. Dacă trebuie să forţaţi codificarea ANSI (rareori necesară), treceţi la false Ca al treilea Argumentul : mapi_message::create(subject, body, false).

save() fluxul de ieşire este gol sau corupt. Întotdeauna deschise fluxurile de ieșire cu std::ios::binary.Streamurile de text traduc newsletter-uri pe Windows, corupând Structura binară a CFB.

Destinatarii care nu apar în câmpul To/Cc din Outlook.add_recipient() adăugare de la receptorul tabelului. se va stabili şi display_to MAPI Proprietatea prin set_property() cu common_message_property_id::display_to şi property_type_code::ptyp_string Outlook afișează numele în header.

HTML nu este prezentat. Confirmă că șirul HTML este bine format cu deschiderea și închiderea <html><body> Verificaţi, de asemenea, că clientul primitor acceptă e-mailuri HTML; unele Clienții minimi fac doar text simplu.

set_internet_message_id() Nu are efect.set_internet_message_id() Stabilește-ți MAPI ID de mesaj internet utilizat pentru a trimite mesaje. Această proprietate este opțională și nu este necesară pentru un fişier valabil MSG.

Întrebări frecvente

Care este cel mai simplu mod de a crea un fișier?

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

Pot crea un mesaj cu doar un corp HTML și fără un corpus de text simplu?

Da, apelul mapi_message::create(subject, "") Pentru a lăsa corpul textului simplu gol, apoi Apelul set_html_body() Pentru a crea conținut HTML.

Cum pot seta clasa mesajului?

folosesc set_message_class() cu șirul de clase MAPI pentru mesaje, de exemplu "IPM.Note" Pentru un mesaj de e-mail standard:

message.set_message_class("IPM.Note");

Pot seta ID-ul de mesaj Internet pentru a trimite mesaje?

Da, apelul set_internet_message_id() cu un şir de ID-uri pentru mesaj în format RFC 2822:

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

Este activat Unicode în mod implicit?

În cazul celor două forme de argumentare a mapi_message::create(subject, body) Activați Unicode Pentru a crea un mesaj ANSI legacy, treceți la false A treia argumentare.

Aşa că

 Română