Com crear un missatge de correu electrònic en C++

Com crear un missatge de correu electrònic en C++

Aspose.Email FOSS for C++ lets you compose fully structured Outlook MSG files in code Utilitzar mapi_message::create().Podeu configurar el tema, text pla i cossos HTML., Enviar identitat, destinataris i salvar el resultat a MSG o EML amb una sola trucada - No s’ha de fer instal·lació d’Outlook.

Pas 1 - Creació del projecte

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)

Pas 2 - Crear un missatge i configurar el subjecte i el cos

mapi_message::create() Accepta el tema i el cos de text pla com a constructor Arguments de:

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

Després de la creació també podeu actualitzar el tema o el cos a través del set_subject() i set_body():

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

Pas 3 - Configuració de propietats del transmisor

Utilitzar set_sender_name() i set_sender_email_address() per identificar el missatger. la El tipus d’adreça és SMTP per defecte; sobrepassar-ho amb set_sender_address_type() Si el Necessitat de:

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

Pas 4 - Afegir receptors

add_recipient() Apliqueu un destinatari al missatge.Cal·leu-lo una vegada per destinatar:

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

Pas 5 - Crear un cos HTML

Utilitzar set_html_body() per emmagatzemar una versió HTML del cos de missatge. ambdós textos plaus i els cossos HTML poden coexistir; clients de correu electrònic trien el format més ric:

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

Pas 6 - Salvar a MSG

save() S’ha de fer una sèrie d’informació en format MSG. Passar a std::filesystem::path per escriure directament al disc, un std::ostream per a la sortida de flux, o trucar amb no Arguments per rebre una 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();
}

Pas 7 - Salvar a EML

Utilitzar save_to_eml() per produir un arxiu RFC 5322 / MIME en lloc de MSG. Les sobrecarregades (puta, corrent o bytes) estan disponibles:

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

Problemes comuns i solucions

El missatge s’ha guardat però Outlook mostra el text enrere. Assegureu-vos que el missatge es crea amb Suport de string Unicode. mapi_message::create() Permet unificar les files de codi unicode per defecte. Si cal obligar a codificar ANSI (rara necessària), passa false Com el tercer Argument de: mapi_message::create(subject, body, false).

save() La producció de flux és buida o corrupta. Sempre obert els fluxos de sortida amb std::ios::binary. els fluxos de mode de text tradueixen les novetats a Windows, corrompent el Estructura binària CFB.

Recipients que no apareixen en el camp To/Cc a Outlook. El seuadd_recipient() Addicció Els destinataris a la taula de receptors MAPI. addicionalment, s’estableix el display_to MAPI Propietat per via set_property() amb common_message_property_id::display_to i property_type_code::ptyp_string Així, Outlook mostra els noms en el títol.

El cos HTML no es presenta. Confirmar que la barra HTML està ben format amb l’obertura i tancament <html><body> També comprovar que el client rebutja suposa l’e-mail HTML; alguns Els clients mínims només fan text clar.

set_internet_message_id() No té cap efecte. El seuset_internet_message_id() Establir el ID de missatge d’Internet MAPI utilitzat per a la trencada. Aquesta propietat és opcional i no requereix Per a un fitxer MSG.

Preguntes freqüents

Quina és la manera més senzilla de crear un arxiu MSG?

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

Puc crear un missatge amb només un cos HTML i sense un cor de text pla?

Sí, trucar mapi_message::create(subject, "") per deixar el cos de text plau buit, i després trucades set_html_body() Per a la configuració del contingut HTML.

Com s’estableix la classe de missatge?

Utilitzar set_message_class() amb la rama de classe del missatge MAPI, per exemple "IPM.Note" Per a un missatge de correu electrònic estàndard:

message.set_message_class("IPM.Note");

Puc configurar el missatge d’Internet per a la trencada?

Sí, trucar set_internet_message_id() amb una rama de missatge format RFC 2822:

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

És unicode activat per default?

La forma de dos arguments mapi_message::create(subject, body) Permet unicode per crear un missatge d’herència ANSI, passar false Com a tercer argument.

Vegeu també

 Català