چگونه یک پیام ایمیل را در 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.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، گزینه A را انتخاب کنید. 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.جریان های متن به حالت ترجمه اخبار در ویندوز، فساد آن را ساختار 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 Message Class string می پردازیم. "IPM.Note" برای یک پیام ایمیل استاندارد:
message.set_message_class("IPM.Note");آیا می توانم پیام های اینترنتی را برای تهدید تنظیم کنم؟?
بله تماس بگیرید set_internet_message_id() با یک ردیف پیام RFC 2822-فرمت:
message.set_internet_message_id("<msg-001@example.com>");آیا Unicode به صورت پیش فرض فعال است؟?
دو نکته: شکل استدلال mapi_message::create(subject, body) امکان استفاده از Unicode برای ایجاد یک پیام ارثی ANSI، عبور کنید. false به عنوان سومین استدلال.