Как да създадете имейл съобщение в 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 за изход на потока или обаждане с нет аргументи за получаване на 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();
}

Стъпка 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() Уникални ленти по подразбиране. Ако трябва да наложите ANSI кодиране (редко е необходимо), преминайте през false Като трето А аргументът: mapi_message::create(subject, body, false).

save() Произходът на потока е празен или корумпиран. Винаги отворени изходи с std::ios::binary. текстови потоци превеждат новини в Windows, корумпиращи Движението на CFB структура.

Приемници, които не се появяват в полето To/Cc в Outlook. Сърцетоadd_recipient() Добавяне в таблицата на MAPI. допълнително задайте 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 Internet Message ID, използвана за изтегляне. Тази собственост е факултативна и не се изисква За валиден MSG файл.

Често задавани въпроси

Какъв е най-лесният начин да се създаде 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);
}

Мога ли да създам съобщение с само един HTML и без плоско-текстово тяло?

Да, обадете се mapi_message::create(subject, "") да оставят плоско-текстовото тяло празно, след това повикване set_html_body() За да се създаде HTML съдържание.

Как да задавам класа на съобщението?

Използване set_message_class() с MAPI съобщение клас лента, например "IPM.Note" За стандартно имейл съобщение:

message.set_message_class("IPM.Note");

Мога ли да задавам интернет съобщение-ID за заплашване?

Да, обадете се set_internet_message_id() с RFC 2822 формат съобщение ID лента:

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

Уникален ли е стандартният код?

Двустранната форма на аргументацията е mapi_message::create(subject, body) Уникална възможност за за да създадете наследство ANSI съобщение, преминаване false Като трето аргумент.

Виж също

 Български