Як створити електронну пошту в C++

Як створити електронну пошту в C++

Aspose.Email FOSS for C++ lets you compose fully structured Outlook MSG files in code Використовувати mapi_message::create().Ви можете встановити тему, простий текст і HTML-тіла, ідентифікації відправника, одержувачів та збереження результату на MSG або EML за допомогою одного виклику — Не потрібно встановлювати Outlook.

Крок 1 - Завантажити проект

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)

Крок 2 — Створення повідомлення та налаштування предмета і тіла

mapi_message::create() приймає суб’єкт і тіло простий текст як конструктор Аргументи :

#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");

Після створення ви також можете оновити тему або тіло через set_subject() та set_body():

message.set_subject("Revised: Quarterly Status Update");
message.set_body("Updated body text.");

Крок 3 — Налаштування властивостей відправнику

Використовуйте set_sender_name() та set_sender_email_address() Для того, щоб визначити видавця. Тип адреси SMTP за замовчуванням; перевершити його з set_sender_address_type() Якщо необхідні :

message.set_sender_name("Build Agent");
message.set_sender_email_address("build.agent@example.com");

Крок 4 - Додавання прийомників

add_recipient() Завантажити повідомлення один раз на одержувача:

message.add_recipient("alice@example.com", "Alice Example");
message.add_recipient("bob@example.com", "Bob Example");

Крок 5 — Налаштування HTML-коробки

Використовуйте set_html_body() зберігати HTML-версію тіла повідомлення. обидва простий текст HTML-органи можуть співіснувати; клієнти електронної пошти вибирають більш багатий формат:

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>");

Крок 6 — Зберегти до MSG

save() Завантажити повідомлення у форматі Outlook MSG. std::filesystem::path Щоб записати на диск, а std::ostream для потокового виходу або дзвінка з ні Аргументи для отримання а 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();
}

Крок 7 — Зберегти до EML

Використовуйте save_to_eml() Наприклад, якщо ви хочете отримати файл RFC 5322 / MIME замість MSG. Перевантаження (путь, поток або байти) доступні:

#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"));
}

Поширені проблеми та виправлення

Повідомлення збережено, але Outlook відображає стертий текст. Переконайтеся, що повідомлення створено з Підтримка Unicode String. mapi_message::create() За замовчуванням можна вводити Unicode. Якщо потрібно змусити кодування ANSI (рідко необхідне), проходьте false Як третій Аргументи : mapi_message::create(subject, body, false).

save() Вихід потоку порожній або зруйнований. Завжди відкрийте потоки виходу з std::ios::binary.Потоки текстового режиму перекладають новинки на Windows, пошкоджуючи Бінна структура CFB.

Приймачі, які не відображаються в полі To/Cc у програмі Outlook. Іadd_recipient() Додаток Додатково до таблиці приймачів додається пункт display_to MAPI Власність через set_property() З common_message_property_id::display_to та property_type_code::ptyp_string Outlook показує імена в заголовку.

HTML не відтворюється. Підтвердіть, що HTML-строк добре сформований з відкриттям і закриття <html><body> Також перевірте, чи підтримує клієнт електронної пошти HTML; деякі з них Мінімальні клієнти показують тільки простий текст.

set_internet_message_id() Немає ніякого ефекту. Іset_internet_message_id() Встановити MAPI ІД інтернет-повідомлення, що використовується для змішування. Ця властивість є опціональною і не потрібна Для того щоб отримати дійсний файл.

Часті запитання

Який найпростіший спосіб створити файл?

#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);
}

Чи можна створювати повідомлення з HTML-кодом і без простого тексту?

Так, зателефонуйте mapi_message::create(subject, "") Щоб залишити тіло простий-текст порожнім, то Телефонуйте set_html_body() Для того щоб встановити HTML-контент.

Як я встановіть клас повідомлення?

Використовуйте set_message_class() за допомогою класу MAPI для повідомлення, наприклад "IPM.Note" Для стандартного електронного листа:

message.set_message_class("IPM.Note");

Чи можна встановити ідентифікатор Інтернет-повідомлення для трейдингу?

Так, зателефонуйте set_internet_message_id() За допомогою RFC 2822-формату ID рядка повідомлення:

message.set_internet_message_id("<msg-001@example.com>");

Чи є Unicode ввімкненим за замовчуванням?

Форма двох аргументів mapi_message::create(subject, body) Завантажити Unicode Щоб створити спадкоємне повідомлення ANSI, проходьте false Як третій аргумент.

Це також

 Українська