Jak vytvořit e-mail v C++

Jak vytvořit e-mail v C++

Aspose.Email FOSS for C++ lets you compose fully structured Outlook MSG files in code Použití mapi_message::create().Můžete nastavit téma, plochý text a HTML tělesa, posílat identitu, příjemce a zachránit výsledek na MSG nebo EML s jedním voláním - Není nutné instalovat Outlook.

Krok 1 - Zadejte projekt

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 - Vytvořte zprávu a nastavte předmět a tělo

mapi_message::create() přijímá subjekt a textový orgán jako konstruktor Argumenty jsou:

#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 vytvoření můžete také aktualizovat předmět nebo tělo prostřednictvím set_subject() a set_body():

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

Krok 3 – nastavení vlastností odesílatele

Použití set_sender_name() a set_sender_email_address() Zobrazit odkaz na odesílatele.cz Typ adresy je SMTP a přehánějí se; přemýšlejte o tom, co je set_sender_address_type() Pokud Potřebujeme :

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

Krok 4 – Přidat příjemce

add_recipient() Připojte příjemce k zprávě. volejte ji jednou za příjemcem:

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

Krok 5 - Vytvořte HTML tělo

Použití set_html_body() ukládat HTML verzi zpráva těla. obojí plochý text a HTML těla mohou coexistovat; e-mailové klienty si vybírají 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šetřete na MSG

save() Přihlašování do formátu Outlook MSG. std::filesystem::path Připravte se přímo na disk, a to std::ostream pro streamový výstup, nebo volání s ne Argumenty k přijetí 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šetřete na EML

Použití save_to_eml() vytvořit soubor RFC 5322 / MIME namísto MSG. stejné tři Přetížení (původ, proud nebo byty) jsou k dispozici:

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

Časté problémy a opravy

Zpětná zpráva je uložena, ale Outlook zobrazuje rozmazaný text. Ujistěte se, že je zpráva vytvořena s Unicode String podpory. mapi_message::create() Unicode řetězce dle výchozího nastavení. Pokud potřebujete nutit ANSI kódování (řídka nezbytné), projděte false Jako třetí Argumenty : mapi_message::create(subject, body, false).

save() Výstup je prázdný nebo zkrachovaný. Vždy otevřené výstupní proudy s std::ios::binary.Textové toky překládají novinky na Windows, zkreslují binární CFB struktura.

Příjemce, které se v poli To/Cc ve službě Outlook neobjeví. Vlastníadd_recipient() Přidat MAPI - MAPI - Příjemce do tabulky.Dále nastavte display_to MAPI majetek prostřednictvím set_property() s common_message_property_id::display_to a property_type_code::ptyp_string Outlook zobrazuje jména v hlavě.

HTML tělo není přenesené. Potvrďte, že řetězec HTML je dobře tvarován s otevřením a Zavřít <html><body> Také ověřte, že příjemce klienta podporuje HTML e-mail; některé Minimální klienty poskytují pouze jasný text.

set_internet_message_id() Nemá žádný účinek. Vlastníset_internet_message_id() Setkáváme se s MAPI internetový odkaz ID používaný pro šifrování. Tato vlastnost je volitelná a není požadována Pro správný MSG soubor.

Často kladené otázky

Jaký je nejjednodušší způsob, jak vytvořit soubor 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ůžu vytvořit zprávu s pouze jedním tělem HTML a bez plochého textu?

Ano, volání mapi_message::create(subject, "") aby se tělo zrovna ztracelo, pak Volání set_html_body() Zobrazit obsah HTML.

Jak nastavit třídu zprávy?

Použití set_message_class() s MAPI zprávy třídní řetězec, například "IPM.Note" Pro standardní e-mailovou zprávu:

message.set_message_class("IPM.Note");

Můžu nastavit internetový ID zprávy pro hrozbou?

Ano, volání set_internet_message_id() s RFC 2822 formátovým ID řetězcem:

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

Je Unicode povolený dle předvolby?

Dvojitý argument formy mapi_message::create(subject, body) Umožňuje Unicode pro vytvoření dědictví ANSI zprávy, přejděte false Třetí argument je.

Viz také

 Čeština