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.gitadd_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.