Kako napraviti e-poruku u C++?
Aspose.Email FOSS for C++ lets you compose fully structured Outlook MSG files in code korištenje mapi_message::create().Možete postaviti predmet, običan tekst i HTML tijela., identitet pošiljatelja, primatelje i sačuvati rezultat na MSG ili EML s jednim pozivom ne zahtijeva instaliranje programa Outlook.
Korak 1 Uspostavljanje projekta
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)Korak 2 Stvorite poruku i postavite predmet i tijelo
mapi_message::create() prihvaća predmet i tijelo u običnom tekstu kao konstruktor argument:
#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");Nakon stvaranja možete također ažurirati predmet ili tijelo putem set_subject() i u članku 1. set_body():
message.set_subject("Revised: Quarterly Status Update");
message.set_body("Updated body text.");Korak 3 Postavite svojstva šaljivača
Upotreba: set_sender_name() i u članku 1. set_sender_email_address() Identificirati šaljivača. tip adrese je: SMTP podrazumijevano; preokrenuti s: set_sender_address_type() ako: potrebno:
message.set_sender_name("Build Agent");
message.set_sender_email_address("build.agent@example.com");Korak 4 Dodaj primatelje
add_recipient() Pripojite primatelja poruke.:
message.add_recipient("alice@example.com", "Alice Example");
message.add_recipient("bob@example.com", "Bob Example");Korak 5 Postavite HTML tijelo
Upotreba: set_html_body() Za pohranu HTML verzije tijela poruke. Oboje je u običnom tekstu i HTML tijela mogu koegzistirati; e-mail klijenti odaberu bogatiji 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>");Korak 6 Sačuvati na MSG
save() serijalizira poruku u Outlook MSG format. Prenosite a std::filesystem::path da pišem direktno na disk, a std::ostream za izlaz struje ili poziv bez argumentima za primanje 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();
}Korak 7 Sačuvati na EML
Upotreba: save_to_eml() Da bi se proizveo RFC 5322 / MIME datoteka umjesto MSG. Ista tri U slučaju da je to moguće, mora se provesti pregled.:
#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"));
}Česta pitanja i rješenja
Poruka je sačuvana, ali Outlook pokazuje nejasno tekst. Pobrini se da je poruka stvorena s: Podrška za Unicode nizove. mapi_message::create() omogućuje Unicode nizove podrazumijevanjem. Ako trebate prisiljeti ANSI kodiranje (rijetko potrebno), proći false kao treća. argument: mapi_message::create(subject, body, false).
save() Izlaz toka je prazan ili pokvaren. Uvijek otvorite izlazne tokove s: std::ios::binary.Tekstni tokovi prevode novine na Windows-u, narušavajući binarna CFB struktura.
Primatelji koji se ne pojavljuju u polju To/Cc u programu Outlook. Sljedeći članak:add_recipient() doda se: Također postavite primatelje za MAPI primalac tablice. display_to MAPI imovina preko set_property() s: common_message_property_id::display_to i u članku 1. property_type_code::ptyp_string tako da Outlook prikazuje imena u zaglavlju.
HTML tijelo nije prikazano. Potvrdite HTML niz je dobro formiran s otvaranjem i zaključavanje <html><body> Također provjerite primatelj klijenta podržava HTML email; neki minimalni klijenti prikazuju samo običan tekst.
set_internet_message_id() nema efekta. Sljedeći članak:set_internet_message_id() određuje: MAPI Internet poruka ID korišten za threading. Ova svojina je opcionalna i nije obavezna za valjan MSG datoteku.
Česta pitanja
Koji je najlakši način za kreiranje datoteke 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);
}Mogu li stvoriti poruku samo s HTML tijelu i bez običnog teksta tijela?
Da, nazovi. mapi_message::create(subject, "") da ostavi prazno tijelo teksta, onda poziv set_html_body() za postavljanje HTML sadržaja.
Kako postaviti razred poruke?
Upotreba: set_message_class() s MAPI znakom za klasu poruke, na primjer "IPM.Note" za standardnu e-poruku:
message.set_message_class("IPM.Note");Mogu li postaviti Internet poruku-ID za lance?
Da, nazovi. set_internet_message_id() Sljedeći članakSlužbeni broj:
message.set_internet_message_id("<msg-001@example.com>");Je li Unicode podrazumijevano uključen?
Da, dvostruki argument iz “Dvije stvari” je… mapi_message::create(subject, body) omogućuje Unicode Za kreiranje legate ANSI poruke, proći false kao treći argument.