Як створити електронну пошту в 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.gitadd_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 Як третій аргумент.