Cara Mencipta Mesej E-mel dalam C++
Aspose.Email FOSS for C++ lets you compose fully structured Outlook MSG files in code Menggunakan mapi_message::create().Anda boleh menetapkan subjek, teks biasa dan badan HTML, identiti penghantar, penerima dan simpan hasil kepada MSG atau EML dengan panggilan tunggal — Tiada instalasi Outlook diperlukan.
Langkah 1 – Menubuhkan projek
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)Langkah 2 – Mencipta Mesej dan Set Subjek dan Tubuh
mapi_message::create() menerima subjek dan badan teks biasa sebagai pembina Argumen :
#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");Selepas penciptaan anda juga boleh mengemas kini subjek atau badan melalui set_subject() dan set_body():
message.set_subject("Revised: Quarterly Status Update");
message.set_body("Updated body text.");Langkah 3 - Setkan Properties Penghantar
digunakan set_sender_name() dan set_sender_email_address() untuk mengesan pembawa. a. Alamat jenis ialah SMTP dengan cara yang tidak sah; mengalihkannya kepada set_sender_address_type() jika diperlukan :
message.set_sender_name("Build Agent");
message.set_sender_email_address("build.agent@example.com");Langkah 4 - Tambah penerima
add_recipient() Menerima satu mesej kepada penerima.Panggilnya sekali bagi setiap penerimaan:
message.add_recipient("alice@example.com", "Alice Example");
message.add_recipient("bob@example.com", "Bob Example");Langkah 5 – Setkan badan HTML
digunakan set_html_body() untuk menyimpan versi HTML badan mesej. kedua-dua teks biasa dan HTML badan boleh hidup bersama; pelanggan e-mel memilih format yang lebih kaya:
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>");Langkah 6 - Simpan kepada MSG
save() mengurutkan mesej ke dalam format Outlook MSG. Pass a std::filesystem::path untuk menulis secara langsung ke cakera, sebuah std::ostream untuk output aliran, atau panggilan dengan tidak Argumen untuk menerima 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();
}Langkah 7 - Simpan kepada EML
digunakan save_to_eml() Perkara yang sama berlaku pada 3 buah fail. Overloads (path, stream atau bytes) boleh didapati:
#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"));
}Isu Umum dan Penyelesaian
Mesej disimpan tetapi Outlook memaparkan teks yang terjejas. Pastikan mesej itu dicipta dengan Sokongan Unicode string. mapi_message::create() Mengaktifkan Unicode Strings secara lalai. Jika anda perlu memaksa pengkodean ANSI (sangat jarang diperlukan), lulus false Sebagai yang ketiga Argumen : mapi_message::create(subject, body, false).
save() output stream ialah kosong atau rosak. Selalu buka output stream dengan std::ios::binary.Aliran mod teks menerjemahkan berita di Windows, merosakkan Struktur CFB binari.
Penerima yang tidak muncul dalam medan To/Cc dalam Outlook. Melayuadd_recipient() Tambahan kepada penerima.Selain itu, ia juga boleh menetapkan display_to MAPI harta melalui set_property() dengan common_message_property_id::display_to dan property_type_code::ptyp_string Outlook memaparkan nama dalam header.
HTML tidak boleh dihasilkan. Mengesahkan string HTML yang dibentuk dengan baik dengan pembukaan dan Penutupan <html><body> juga mengesahkan bahawa klien penerima menyokong e-mel HTML; beberapa pelanggan minimum hanya membuat teks yang jelas.
set_internet_message_id() tiada kesan. Melayuset_internet_message_id() Letakkan yang MAPI ID mesej internet yang digunakan untuk mengarahkan. sifat ini adalah opsional dan tidak diperlukan untuk fail yang sah.
Soalan Lazim
Apakah cara paling mudah untuk mencipta fail?
#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);
}Bolehkah saya mencipta mesej dengan hanya badan HTML dan tiada badan teks biasa?
ya. panggilan mapi_message::create(subject, "") untuk meninggalkan badan teks yang kosong, kemudian Panggilan set_html_body() untuk mengesetkan kandungan HTML.
Bagaimana saya menetapkan kelas mesej?
digunakan set_message_class() dengan rangkaian kelas mesej MAPI, contohnya "IPM.Note" Untuk mesej e-mel standard:
message.set_message_class("IPM.Note");Bolehkah saya menetapkan Internet Message-ID untuk threading?
ya. panggilan set_internet_message_id() dengan rangkaian ID mesej format RFC 2822:
message.set_internet_message_id("<msg-001@example.com>");Adakah Unicode diaktifkan secara lalai?
- bentuk argumen yang
mapi_message::create(subject, body)Menggunakan Unicode untuk mencipta mesej ANSI yang diwarisi, lulusfalseArgumen ketiga ialah.