1. محصولات
  2.   Aspose.Email
  3.   Aspose.Email FOSS for C++

Aspose.Email FOSS برای C++

فایل‌های Outlook MSG و کانتینرهای CFB را از C++ بخوانید، ایجاد کنید و پردازش کنید — رایگان و متن باز، بدون وابستگی به Microsoft Outlook.

کتابخانهٔ متن باز C++ برای فایل‌های MSG و CFB

Aspose.Email FOSS برای C++ یک کتابخانه منبع باز با مجوز MIT است که برای کار با فایل‌های .msg مایکروسافت آوتلوک و مخازن باینری ترکیبی (CFB) طراحی شده است. هدرها را از طریق CMake وارد کنید و بلافاصله شروع به خواندن، ایجاد و پردازش پیام‌های ایمیل کنید بدون نصب مایکروسافت آوتلوک یا هر زمان‌اجرای مالکیتی.

کتابخانه دو سطح دسترسی را فراهم می‌کند. در سطح پایین، cfb_reader و cfb_writer کنترل کامل بر روی کانتینرهای باینری CFB را می‌دهند — ورودی‌های دایرکتوری را مرور کنید، گره‌های ذخیره‌سازی و داده‌های جریان را بخوانید و بنویسید، و چیدمان خام سکتور را بررسی کنید. msg_reader و msg_writer فرمت MSG را بر روی CFB مدیریت می‌کنند و جریان‌های ویژگی MAPI، جداول گیرندگان و زیرذخیره‌سازی‌های پیوست را نمایش می‌دهند. در سطح بالا، mapi_message به شما امکان می‌دهد پیام‌های جدید را از ابتدا ایجاد کنید، موضوعات، بدنه‌ها، گیرندگان و پیوست‌ها را بخوانید و بین فرمت‌های MSG و EML تبدیل کنید. کتابخانه بر روی هر پلتفرمی که دارای کامپایلر C++17 باشد ساخته می‌شود و هیچ وابستگی خارجی ندارد، که آن را برای ویندوز، لینوکس، macOS، کانتینرهای Docker و سیستم‌های تعبیه‌شده مناسب می‌سازد. یک نسخه سازمانی با ویژگی‌های اضافی به عنوان Aspose.Email for C++ ارائه می‌شود.

خواندن و نوشتن کانتینر CFB

  • باز کردن فایل‌های CFB: بارگذاری کانتینرهای CFB موجود از مسیر فایل، جریان یا آرایه بایت از طریق cfb_reader::from_file()، cfb_reader::from_stream() یا cfb_reader::from_bytes().
  • پیمایش درخت دایرکتوری: ذخیره‌سازی‌ها و جریان‌ها را با استفاده از storage_ids()، stream_ids() و child_ids() فهرست کنید و با resolve_path() به سلسله‌مراتب‌های تو در تو پیمایش کنید.
  • بازرسی گره‌ها: نوع گره را با cfb_node::is_storage() و cfb_node::is_stream() بررسی کنید، زمان‌مهرها را از طریق creation_time() و modified_time() بخوانید.
  • نوشتن کانتینرهای CFB: سندهای CFB را به‌صورت برنامه‌نویسی با cfb_document بسازید و به‌وسیله cfb_writer::to_bytes() یا cfb_writer::write_file() به بایت‌ها یا فایل سریال‌سازی کنید.

جایی که دسترسی CFB استفاده می‌شود

  • بازرسی فایل MSG: CFB قالب ظرف برای فایل‌های Outlook .msg است — دسترسی مستقیم به CFB امکان بازرسی و تعمیر قانونی را فراهم می‌کند.
  • قالب‌های دودویی سفارشی: هر برنامهٔ قدیمی که از CFB برای ذخیره‌سازی داده‌ها استفاده می‌کند می‌تواند بدون وابستگی به COM خوانده یا نوشته شود.
  • بازیابی داده: درخت کامل دایرکتوری را پیمایش کنید و بایت‌های جریان خام را از فایل‌های CFB آسیب‌دیده یا غیر استاندارد استخراج کنید.

خواندن و نوشتن فایل MSG

  • خواندن فایل‌های MSG: فایل‌های MSG Outlook را با msg_reader::from_file() یا msg_reader::from_stream() باز کنید و به جریان‌های ویژگی MAPI زیرین و زیر‌ذخیره‌سازی‌های پیوست دسترسی پیدا کنید.
  • نوشتن فایل‌های MSG: فایل‌های MSG را از یک msg_document با msg_writer::to_bytes() یا msg_writer::write_file() تولید کنید.
  • بازرسی سند MSG: دسترسی به فراداده نسخه از طریق msg_document::major_version(), msg_document::minor_version(), و بررسی سخت‌گیری با msg_document::strict().
  • Convert to CFB: استخراج سند CFB زیرین از یک فایل MSG از طریق msg_document::to_cfb_document().

محل استفاده از پردازش MSG

  • پایپلاین‌های بایگانی ایمیل: خواندن انبوهی از فایل‌های .msg از دایرکتوری‌های بایگانی و استخراج فراداده یا پیوست‌ها.
  • Migration tools: مجموعه‌های MSG را به فرمت‌های استاندارد برای وارد کردن به سیستم‌های غیر‑Outlook تبدیل کنید.
  • کشف قانونی: تجزیه و تحلیل جریان‌های ویژگی‌های خام MAPI برای استخراج تمام فیلدهای پیام شامل ویژگی‌های غیر استاندارد.

API پیام MAPI سطح بالا

  • ایجاد پیام‌ها: یک ایمیل کامل را با mapi_message::create() بسازید، سپس موضوع، متن و متن HTML را از طریق set_subject()، set_body() و set_html_body() تنظیم کنید.
  • تنظیم جزئیات فرستنده: set_sender_name()، set_sender_email_address() و set_sender_address_type() را برای پیام خروجی پیکربندی کنید.
  • مدیریت پیوست‌ها: بارگذاری پیوست‌ها از بایت‌ها یا جریان‌ها با mapi_attachment::from_bytes() و mapi_attachment::from_stream()، و بررسی پیام‌های توکار از طریق is_embedded_message().
  • ذخیره و بارگذاری مجدد: سریال‌سازی با mapi_message::save() و بارگذاری مجدد با mapi_message::from_file() یا mapi_message::from_stream().

محل استفاده از API سطح بالا

  • تولید خودکار ایمیل: هزاران فایل MSG شخصی‌سازی‌شده را از رکوردهای داده در کارهای دسته‌ای تولید کنید.
  • ایجاد فیکسچر تست: ساخت فایل‌های MSG معتبر با محتوای پیش‌بینی‌پذیر برای مجموعه‌های تست یکپارچه‌سازی.
  • استخراج پیوست: فایل MSG را بارگذاری کنید، پیوست‌ها را پیمایش کنید و هر کدام را روی دیسک ذخیره کنید.

تبدیل EML و MIME

  • بارگذاری EML در mapi_message: یک فایل استاندارد .eml (RFC 5322 / MIME) را به یک شیء کامل mapi_message از طریق mapi_message::load_from_eml() تجزیه کنید.
  • Save mapi_message as EML: یک mapi_message را با save_to_eml() به فرمت MIME سریالایز کنید.
  • دقت دورگرد: موضوع، متن، فرستنده، گیرندگان و پیوست‌ها در طول تبدیل‌های EML به MSG به EML حفظ می‌شوند.

محل استفاده از تبدیل EML

  • پل‌برداری فرمت: دریافت ایمیل‌ها به‌صورت EML از سرورهای ایمیل و تبدیل به MSG برای ذخیره‌سازی سازگار با Outlook.
  • تطبیق با استانداردها: تبدیل فایل‌های MSG اختصاصی به MIME استاندارد برای تحویل به هر سرویس حمل ایمیل.
  • نرمال‌سازی بایگانی: یک بایگانی ترکیبی از فایل‌های .eml و .msg را به یک فرمت واحد نرمال کنید.

خواندن موضوع از یک فایل MSG

یک فایل MSG Outlook را از یک جریان باز کنید و موضوع را چاپ کنید — بدون نیاز به Microsoft Outlook.

#include <fstream>
#include <iostream>

#include "aspose/email/foss/msg/mapi_message.hpp"

int main()
{
    std::ifstream input("sample.msg", std::ios::binary);
    auto message = aspose::email::foss::msg::mapi_message::from_stream(input);
    std::cout << message.subject() << '\n';
}

ایجاد و ذخیره یک پیام MSG

یک ایمیل کامل با فرستنده، گیرنده و پیوست بسازید، سپس آن را به هر دو فرمت MSG و EML بنویسید.

#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");
    message.add_recipient("bob@example.com", "Bob");
    message.add_attachment("note.txt", std::vector<std::uint8_t>{'a', 'b', 'c'}, "text/plain");

    std::ofstream msg_output("hello.msg", std::ios::binary);
    message.save(msg_output);

    std::ofstream eml_output("hello.eml", std::ios::binary);
    message.save_to_eml(eml_output);
}
  

منابع پشتیبانی و آموزش

 فارسی