كيفية إنشاء رسالة بريد إلكتروني في C++

كيفية إنشاء رسالة بريد إلكتروني في C++

Aspose.Email FOSS for C++ lets you compose fully structured Outlook MSG files in code باستخدام mapi_message::create().يمكنك تعيين الموضوع والنص المسطح والجثث HTML ،, إرسال الهوية، المستلمين، وتخزين النتيجة إلى MSG أو EML مع مكالمة واحدة - لا يوجد تثبيت Outlook مطلوب.

الخطوة الأولى: إعداد المشروع

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() إرسال رسالة خاصة إلى: The نوع العنوان هو 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 يعرض النص المكسور. تأكد من أن الرسالة تم إنشاؤها مع دعم شريط واحد. mapi_message::create() يتيح إدراج شريط Unicode بشكل افتراضي. إذا كنت بحاجة إلى إجبار ANSI التشفير (نادرا ما تكون ضرورية) ، اجتياز false كما ثالثاً الحجة : mapi_message::create(subject, body, false).

save() إنتاج البث فارغ أو فاسد. دائما مفتوحة البث مع std::ios::binary.التوجيهات النصية تتحول الأخبار على ويندوز، وتفسد الهيكل الثنائي 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:

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

هل يتم تشغيل Unicode بشكل افتراضي؟?

نعم، شكل الحجة المزدوجة من mapi_message::create(subject, body) يتيح Unicode لإنشاء رسالة ANSI التراث، اجتياز false ثالثاً الحجة الثالثة.

انظر أيضا

 العربية