Jak tworzyć wiadomość e-mail w C++

Jak tworzyć wiadomość e-mail w C++

Aspose.Email FOSS for C++ lets you compose fully structured Outlook MSG files in code Używanie mapi_message::create().Możesz ustawić temat, płaski tekst i ciała HTML, wysłać tożsamość, odbiorców i zapisać wynik do MSG lub EML z jednym wezwaniem - Nie wymagane jest instalacja programu Outlook.

Krok 1 – Zorganizuj 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 – Tworzenie wiadomości i ustawienie podmiotu i ciała

mapi_message::create() akceptuje temat i płaski tekst jako konstruktor 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 utworzeniu można również zaktualizować temat lub ciało za pośrednictwem set_subject() i set_body():

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

Krok 3 – ustaw własność nadajnika

Używanie set_sender_name() i set_sender_email_address() Znajduje się w nim wysłannik. - Typ adresu jest SMTP z niewłaściwym, a wówczas przewyższaj go set_sender_address_type() Jeśli Potrzebne jest:

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

Krok 4 – Dodaj do nich receptory

add_recipient() Wpisz do wiadomości odbiorcę.Zaznacz raz na odbiornika:

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

Krok 5 – Ustaw ciało HTML

Używanie set_html_body() do przechowywania wersji HTML ciała wiadomości. obie płaskie teksty i ciała HTML mogą współistnieć; klienci poczty e-mail wybierają najbogatszy 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>");

Krok 6 – Zostaw do MSG

save() Seryalizuje wiadomość do programu Outlook w formacie MSG. std::filesystem::path do pisania na dysku, a std::ostream do wyjścia strumieniowego lub połączenia z nie argumenty do otrzymania 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 – Uszczędzaj na EML

Używanie save_to_eml() do produkcji pliku RFC 5322 / MIME zamiast MSG. Przewlekłe ładunki (przewod, strumień lub bajty) są dostępne:

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

Wspólne problemy i rozwiązania

Pismo zostało zapisane, ale w programie Outlook wyświetlany jest tekst. Upewnij się, że wiadomość została stworzona z Wsparcie dla Unicode String. mapi_message::create() Umożliwia Unicode struny pod standardem. Jeśli potrzebujesz zmusić do kodowania ANSI (rzadko konieczne), przejdź false jako trzecia Argumenty : mapi_message::create(subject, body, false).

save() Wydajność jest pusta lub zepsuta. Zawsze otwierają się strumy wyjściowe z std::ios::binary.Teks-mode strumienia tłumaczyć wiadomości na Windows, korumpując binary CFB struktury.

Odbiorcy nie pojawiają się w polu To/Cc w programie Outlook. Wystarczyadd_recipient() Dodaj w tabeli MAPI. dodatkowo ustawić display_to MAPI Właściwości poprzez set_property() z common_message_property_id::display_to i property_type_code::ptyp_string Tak więc Outlook wyświetla nazwy w nagłówku.

HTML nie jest w stanie zrealizować. Potwierdź, że strona HTML jest dobrze ukształtowana z otwieraniem i zamknięcie <html><body> Tagi. również sprawdź, że klient otrzymuje HTML e-mail; niektóre Minimalne klienci udostępniają tylko wyraźny tekst.

set_internet_message_id() Nie ma efektu. Wystarczyset_internet_message_id() Zestawienie The MAPI Internet Message ID używany do strzelania. ta właściwość jest opcjonalna i nie wymaga W przypadku ważnego pliku MSG.

Często zadawane pytania

Jak najprostszym sposobem jest tworzenie pliku 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);
}

Czy mogę utworzyć wiadomość z tylko jednym ciałem HTML i bez płaskich tekstów?

Tak, zadzwoń mapi_message::create(subject, "") aby pozostawić płaski tekst ciała pusty, a następnie Wzywaj set_html_body() Wprowadzenie treści HTML.

Jak ustawić klasę wiadomości?

Używanie set_message_class() z rzędu klasy wiadomości MAPI, na przykład "IPM.Note" Dla standardowego wiadomości e-mail:

message.set_message_class("IPM.Note");

Czy mogę ustawić identyfikator wiadomości internetowej do strzelania?

Tak, zadzwoń set_internet_message_id() z rzędu identyfikacyjnego wiadomości RFC 2822:

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

Czy Unicode jest włączony z defaultem?

Dwa argumenty, w postaci mapi_message::create(subject, body) Umożliwia Unicode Aby utworzyć dziedzictwo ANSI wiadomość, przejdź false Trzecim argumentem jest.

Zobacz również

 Polski