Cara Mencipta Mesej E-mel dalam C++

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

  1. bentuk argumen yang mapi_message::create(subject, body) Menggunakan Unicode untuk mencipta mesej ANSI yang diwarisi, lulus false Argumen ketiga ialah.

juga

 Bahasa Melayu