Cara Membuat Email dalam C++
Aspose.Email FOSS for C++ lets you compose fully structured Outlook MSG files in code Menggunakan mapi_message::create().Anda dapat mengatur subjek, teks rata dan badan HTML, mengirimkan identitas, penerima, dan menyimpan hasil ke MSG atau EML dengan satu panggilan — Tidak ada instalasi Outlook yang diperlukan.
Langkah 1 – Mengatur proyek
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 – Buat pesan dan tetapkan subjek dan tubuh
mapi_message::create() menerima subjek dan badan teks rata sebagai pembuat Argumen yang :
#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");Setelah penciptaan Anda juga dapat mengemas kini subjek atau tubuh melalui set_subject() dan set_body():
message.set_subject("Revised: Quarterly Status Update");
message.set_body("Updated body text.");Langkah 3 – Menetapkan Properties Sender
Penggunaan set_sender_name() dan set_sender_email_address() Untuk mengidentifikasi pengirim. yang Jenis alamat adalah SMTP dengan cara yang tidak terbatas; melebihi set_sender_address_type() Jika yang diperlukan :
message.set_sender_name("Build Agent");
message.set_sender_email_address("build.agent@example.com");Langkah 4 – Tambahkan reseptor
add_recipient() Menerima pesan yang disertakan oleh penerima.Sila hubungi satu kali per penerimaan:
message.add_recipient("alice@example.com", "Alice Example");
message.add_recipient("bob@example.com", "Bob Example");Langkah 5 – Menetapkan HTML Body
Penggunaan set_html_body() untuk menyimpan versi HTML dari badan pesan. kedua-dua teks rata dan badan HTML dapat coexist; klien email 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 ke MSG
save() mengatur pesan ke format Outlook MSG. std::filesystem::path untuk menulis langsung ke cakera, sebuah std::ostream untuk output streaming, 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 untuk EML
Penggunaan save_to_eml() untuk menghasilkan file RFC 5322 / MIME bukannya MSG. Overload (jalan, aliran atau byte) tersedia:
#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"));
}Masalah dan Fixes Umum
Mesej disimpan tetapi Outlook menunjukkan teks yang terukir. Pastikan pesan tersebut dibuat dengan Unicode string yang mendukung. mapi_message::create() Menggunakan Unicode Rings secara default. Jika Anda perlu memaksa ANSI pengekodan (kurang diperlukan), lulus false Sebagai yang ketiga Argumen yang : mapi_message::create(subject, body, false).
save() Produksi adalah kosong atau korup. Selalu buka output streaming dengan std::ios::binary.Teks-mode aliran menerjemahkan berita di Windows, merusak Struktur biner CFB.
Konsep yang tidak muncul di medan To/Cc dalam Outlook. danadd_recipient() Tambah MAPI. dan tabel penerima. ditambah dengan display_to MAPI Properti melalui set_property() Dengan common_message_property_id::display_to dan property_type_code::ptyp_string Outlook memaparkan nama dalam header.
HTML tidak terkoneksi. Mengkonfirmasi string HTML yang terbentuk dengan baik dengan pembukaan dan Penutupan <html><body> Juga mengkonfirmasi klien yang menerima mendukung email HTML; beberapa Pelanggan minimal hanya memberikan teks yang jelas.
set_internet_message_id() Tidak ada efek. danset_internet_message_id() menetapkan yang MAPI Internet Message ID yang digunakan untuk menandai. Properti ini adalah pilihan dan tidak diperlukan Untuk file MSG yang valid.
Pertanyaan yang Sering Diajukan
Apa cara paling mudah untuk membuat file 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);
}Dapatkah saya membuat pesan dengan hanya satu badan HTML dan tidak ada tubuh teks rata?
Ya, panggilan mapi_message::create(subject, "") untuk meninggalkan tubuh teks rata kosong, maka panggilan set_html_body() Untuk mengatur konten HTML.
Bagaimana saya menetapkan kelas pesan?
Penggunaan set_message_class() dengan MAPI pesan kelas string, misalnya "IPM.Note" Untuk pesan email standar:
message.set_message_class("IPM.Note");Dapatkah saya menetapkan ID pesan Internet untuk menandatangani?
Ya, panggilan set_internet_message_id() Dengan RFC 2822 format pesan ID string:
message.set_internet_message_id("<msg-001@example.com>");Apakah Unicode diaktifkan secara default?
2 - Bentuk argumen yang mapi_message::create(subject, body) Memungkinkan Unicode Untuk membuat pesan warisan ANSI, lulus false sebagai argumen ketiga.