Ako vytvoriť e-mailovú správu v C++

Ako vytvoriť e-mailovú správu v C++

Aspose.Email FOSS for C++ lets you compose fully structured Outlook MSG files in code Používanie mapi_message::create().Môžete nastaviť predmet, plochý text a HTML telá, odosielať totožnosť, príjemcov a zachrániť výsledok na MSG alebo EML s jedným volaním - Nie je potrebná inštalácia programu Outlook.

Krok 1 – Nastavenie projektu

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)

Krok 2 – Vytvorte správu a nastavíte subjekt a telo

mapi_message::create() akceptuje predmet a textový orgán ako konštruktora argumenty :

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

Po vytvorení môžete tiež aktualizovať predmet alebo telo prostredníctvom set_subject() a set_body():

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

Krok 3 – Zadajte vlastnosti odosielateľa

Používanie set_sender_name() a set_sender_email_address() identifikovať odosielateľa. → Adresa typu je SMTP a v rozpore s ním; prevrátiť sa set_sender_address_type() Ak sa Potrebné je:

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

Krok 4 – Pridať receptory

add_recipient() pripojiť príjemcu k správu. zavolať raz za príjemca:

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

Krok 5 - Vytvorte HTML telo

Používanie set_html_body() ukladať HTML verziu správy tela. obidve ploché texty a HTML telá môžu koexistovať; e-mailové klienty vyberajú bohatší formát:

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

Krok 6 – Ušetriť na MSG

save() serializuje správu do formátu Outlook MSG. prejdite na std::filesystem::path písanie priamo na disk, a to std::ostream pre stream výstup, alebo volanie s nie argumenty na prijatie A 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();
}

Krok 7 – Ušetriť na EML

Používanie save_to_eml() vytvoriť súbor RFC 5322 / MIME namiesto MSG. preťaženia (cesta, prúd alebo byty) sú k dispozícii:

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

Bežné problémy a riešenia

Zhromaždenie je uložené, ale Outlook zobrazuje šikmý text. Uistite sa, že správa je vytvorená s Unicode String podpory. mapi_message::create() Umožňuje Unicode pruhy podľa predvoleného nastavenia. Ak potrebujete nútiť kódovanie ANSI (zriedka nevyhnutné), prejdite na false ako tretí argumentovať : mapi_message::create(subject, body, false).

save() Výstup toku je prázdny alebo korumpovaný. Vždy otvorené výstupné prúdy s std::ios::binary.Text-mode prúdy prekladajú novinky na Windows, korumpovať binárne CFB štruktúra.

Príjemcov, ktoré sa nezobrazujú v poli To/Cc v programe Outlook. - prebiehajúciadd_recipient() Addov MAPI prijímač tabuľky. navyše nastaviť display_to MAPI nehnuteľnosti prostredníctvom set_property() s common_message_property_id::display_to a property_type_code::ptyp_string Outlook zobrazuje názvy v hlavičke.

HTML telo nie je renderované. potvrďte, že HTML pruh je dobre tvarovaný s otvorením a uzatvorenie <html><body> Tiež overte, že príjemca klienta podporuje HTML e-mail; niektoré Minimálny klient poskytuje iba jasný text.

set_internet_message_id() Nemá žiadny účinok. - prebiehajúciset_internet_message_id() Zadajte si MAPI internetový správny ID používaný na vysielanie. Táto vlastnosť je voliteľná a nevyžaduje sa pre platný MSG súbor.

Často kladené otázky

Aký je najjednoduchší spôsob, ako vytvoriť súbor 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);
}

Môžem vytvoriť správu s iba jedným HTML telom a bez plochého textu?

Áno, volajte mapi_message::create(subject, "") aby sa telový text nechal prázdny, potom Volanie set_html_body() nastaviť obsah HTML.

Ako nastaviť triedu správy?

Používanie set_message_class() s MAPI správou triedy pruh, napríklad "IPM.Note" pre štandardnú e-mailovú správu:

message.set_message_class("IPM.Note");

Môžem nastaviť internetový ID správy na hroznovanie?

Áno, volajte set_internet_message_id() s RFC 2822 formátovým ID pruhom:

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

Je Unicode povolený predvolene?

Dvojitý argument formy mapi_message::create(subject, body) Umožňuje Unicode strings. vytvoriť dedičstvo ANSI správy, prejsť false ako tretí argument.

Pozri tiež

 Slovenčina