Miten luoda sähköpostiviesti C++: ssä

Miten luoda sähköpostiviesti C++: ssä

Aspose.Email FOSS for C++ lets you compose fully structured Outlook MSG files in code Käytössä mapi_message::create().Voit asettaa aihe, tasainen teksti ja HTML-kokoja, lähettää henkilöllisyyden, vastaanottajien ja tallentaa tuloksen MSG tai EML yhdellä puhelulla - Outlookin asennusta ei tarvita.

Vaihe 1 - Suunnittele projektin

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)

Vaihe 2 - Luo viesti ja aseta aihe ja keho

mapi_message::create() hyväksyy aihe ja laaja-tekstinen elin rakentajana argumenttien mukaan:

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

Luomisen jälkeen voit myös päivittää aihe tai keho kautta set_subject() ja set_body():

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

Vaihe 3 – Lähettäjän ominaisuudet

Käytä set_sender_name() ja set_sender_email_address() Lähettäjän tunnistaminen. - osoitteen tyyppi on SMTP ja sen kanssa; ylittää se set_sender_address_type() Jos Tarvitaan siis:

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

Vaihe 4 - Lisää reseptoreita

add_recipient() Lähetä viesti vastaanottajalle. soita se kerran vastaanottajasta:

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

Vaihe 5 - Aseta HTML-koko

Käytä set_html_body() tallentaa HTML-versio viestin ruumiista. molemmat suorat tekstit ja HTML-keskukset voivat koexist; sähköpostin asiakkaat valitsevat rikkaimman muodon:

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

Vaihe 6 – Tallenna MSG: lle

save() lähettää viestin Outlookissa MSG-muodossa. pass a std::filesystem::path kirjoittaa suoraan levylle, ja std::ostream virta-lähdön tai soittamalla ei argumentit vastaanottaa 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();
}

Vaihe 7 – Tallenna EML: lle

Käytä save_to_eml() tuottaa RFC 5322 / MIME tiedostoa MSG: n sijaan. Ylipaino (katu, virta tai bytejä) on saatavilla:

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

Yleisiä ongelmia ja korjauksia

Viesti on tallennettu, mutta Outlook näyttää kuorman tekstiä. Varmista, että viesti luodaan Unicode String tukee. mapi_message::create() Unicode-tyyppiset linjat voidaan käyttää oletusarvoisesti. Jos sinun on pakko ANSI koodaus (harvoin tarpeen), pass false Kolmanneksi kuin argumentti on: mapi_message::create(subject, body, false).

save() Virta on tyhjä tai korruptoitu. Aina avoinna lähdekoodiin std::ios::binary. tekstimenetelmät kääntävät uutisia Windowsissa, korruptoivat binary CFB rakenne.

Vastaanottimet, jotka eivät näkyy To/Cc -kentässä Outlookissa. -Käyttöönadd_recipient() Lisäämme MAPI-vastaanottimistaulukkoon. lisätään display_to MAPI Omistuksen kautta set_property() ja kanssa common_message_property_id::display_to ja property_type_code::ptyp_string Outlook näyttää nimen otsikossa.

HTML-koko ei ole luovutettu. Varmista, että HTML-tyyli on hyvin muodostunut avaamalla ja Suljettu <html><body> myös tarkistaa vastaanottava asiakas tukee HTML-postiviestiä; jotkut Vähimmäiskuljettajat tekevät vain selkeää tekstiä.

set_internet_message_id() Ei ole vaikutusta. -Käyttöönset_internet_message_id() Aseta se MAPI Internet Message ID käytetään huijaamiseen. Tämä ominaisuus on valinnainen eikä vaadita Käytettävissä oleva MSG-tiedosto.

Usein kysytyt kysymykset

Mikä on helpoin tapa luoda MSG-tiedosto?

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

Voinko luoda viestin, jossa on vain HTML-konserni eikä suoraksen keho?

Kyllä - soittaminen mapi_message::create(subject, "") Jätä puhtaasti teksti-keho tyhjä, niin soittaminen set_html_body() HTML-sisällön määrittämistä varten.

Miten määrittelen viestin luokan?

Käytä set_message_class() MAPI-viestien luokan sarja, esimerkiksi "IPM.Note" Tavallinen sähköpostiviesti:

message.set_message_class("IPM.Note");

Voinko asettaa Internet Message-ID:n uhkaamiseen?

Kyllä - soittaminen set_internet_message_id() RFC 2822 -muodossa oleva viesti tunnistus:

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

Onko Unicode käytössä oletusarvoisesti?

Kaksi argumenttia muodostavat mapi_message::create(subject, body) Unicode mahdollistaa - luoda perintö ANSI-viesti, pass false Kolmanneksi argumentti on.

Katso myös

 Suomi