כיצד ליצור הודעה דוא"ל ב- 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 על ידי default; להעלות אותו עם 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() יש להוסיף את הקובץ של ה-POSH ב-5322 במקום ל-322. ה-Overloads (דרך, זרם או באט) זמינים:

#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 Strings כברירת מחדל. אם אתה צריך לכפות 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");

האם ניתן להגדיר את מזהה הודעות האינטרנט ל- threading?

כן, התקשר set_internet_message_id() עם מסמך ה-ID של הודעה בפורמט RFC 2822:

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

האם Unicode מופעל כברירת מחדל?

צורת ההסבר השנייה של mapi_message::create(subject, body) תגיות Unicode כדי ליצור הודעה ANSI מורשת, העבר false כמו הטענה השלישית.

ראה גם

 עברית