Cara Membuat Email dalam C++

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.git
add_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.

Lihat juga

 Bahasa Indonesia