परिचय
C++ में Outlook MSG फ़ाइलों के साथ काम करना ऐतिहासिक रूप से Windows-केवल COM ऑटोमेशन की आवश्यकता रखता था
या प्रतिबंधात्मक लाइसेंसों वाले भारी-भरकम थर्ड‑पार्टी लाइब्रेरीज़ की।
Aspose.Email FOSS for C++ इसको बदलता है: यह एक शुद्ध C++17 लाइब्रेरी है जिसमें कोई बाहरी निर्भरताएँ नहीं, कोई COM नहीं, और कोई
प्लेटफ़ॉर्म‑विशिष्ट कोड नहीं है। यह Linux, macOS, और Windows पर समान रूप से बनती है।
लाइब्रेरी MIT लाइसेंस के तहत जारी की गई है और GitHub के माध्यम से स्रोत के रूप में वितरित की जाती है। आप इसे रिपॉज़िटरी को क्लोन करके और इसे CMake सबडायरेक्टरी के रूप में जोड़कर एकीकृत करते हैं — पैकेज मैनेजर पंजीकरण की आवश्यकता नहीं है, और बाइनरी को पूर्व-निर्मित करने की जरूरत नहीं है।
यह पोस्ट मुख्य कार्यप्रवाह को समझाती है: मौजूदा MSG फ़ाइल को पढ़ना, उसकी गुणों की जाँच करना, प्रोग्रामेटिक रूप से एक नया संदेश बनाना, और MSG और EML फ़ॉर्मेट्स के बीच राउंड‑ट्रिप करना।
मुख्य विशेषताएँ
मौजूदा MSG फ़ाइलें पढ़ें
msg_reader का उपयोग करके .msg फ़ाइल खोलें और msg_document का उपयोग करके उसकी संरचित सामग्री तक पहुँचें। दोनों क्लासें aspose::email::foss::msg नेमस्पेस में स्थित हैं।
#include "aspose/email/foss/msg/msg_reader.hpp"
#include "aspose/email/foss/msg/msg_document.hpp"
#include <filesystem>
namespace aef = aspose::email::foss;
auto reader = aef::msg::msg_reader::from_file(std::filesystem::path("message.msg"));
auto document = aef::msg::msg_document::from_reader(reader);
msg_reader में एक from_stream ओवरलोड भी है जो std::istream से पढ़ने के लिए है, जो सर्वर‑साइड या पाइपलाइन संदर्भों में उपयोगी है जहाँ फ़ाइलें डिस्क पर मौजूद नहीं होतीं।
संदेशों को प्रोग्रामेटिक रूप से बनाएं
mapi_message::create एक नया इन‑मेमोरी संदेश बनाता है जिसमें विषय और बॉडी होती है। आप
फिर प्रेषक विवरण सेट कर सकते हैं, प्राप्तकर्ताओं को जोड़ सकते हैं, और सहेजने से पहले बाइनरी या टेक्स्ट पेलोड संलग्न कर सकते हैं।
#include "aspose/email/foss/msg/mapi_message.hpp"
namespace aef = aspose::email::foss;
auto msg = aef::msg::mapi_message::create(
"Quarterly status update",
"Hello team,\n\nPlease find the rollout summary attached.\n\nRegards");
msg.set_sender_name("Build Agent");
msg.set_sender_email_address("build.agent@example.com");
msg.add_recipient("alice@example.com", "Alice Example");
msg.save(std::filesystem::path("output.msg"));
MSG को EML में बदलें
mapi_message सीधे MSG-to-EML रूपांतरण को save_to_eml विधि के माध्यम से समर्थन करता है।
EML आउटपुट RFC 5322 (MIME) के अनुरूप है, जिससे यह किसी भी मानक मेल
क्लाइंट या प्रोसेसिंग पाइपलाइन के साथ संगत बनता है।
auto loaded = aef::msg::mapi_message::from_file(
std::filesystem::path("message.msg"), /*strict=*/false);
// Save as EML to a file
loaded.save_to_eml(std::filesystem::path("message.eml"));
// Or capture as bytes
std::vector<std::uint8_t> eml_bytes = loaded.save_to_eml();
EML से लोड करें
उल्टा दिशा भी समान रूप से सरल है: load_from_eml एक EML फ़ाइल पढ़ता है और मेमोरी में एक mapi_message उत्पन्न करता है, जिसे फिर MSG में वापस सहेजा जा सकता है।
auto from_eml = aef::msg::mapi_message::load_from_eml(
std::filesystem::path("message.eml"));
from_eml.save(std::filesystem::path("restored.msg"));
निम्न-स्तरीय CFB एक्सेस
उन्नत उपयोग मामलों के लिए — जैसे कि उच्च‑स्तरीय API द्वारा उजागर नहीं किए गए कच्चे MAPI प्रॉपर्टीज़ को पढ़ना — cfb_reader MSG फ़ॉर्मेट को आधार देने वाले कंपाउंड फ़ाइल बाइनरी कंटेनर तक सीधा पहुँच प्रदान करता है।
#include "aspose/email/foss/cfb/cfb_reader.hpp"
namespace aef = aspose::email::foss;
auto cfb = aef::cfb::cfb_reader::from_file(std::filesystem::path("message.msg"));
auto storage_ids = cfb.storage_ids();
auto stream_ids = cfb.stream_ids();
त्वरित प्रारंभ
चरण 1 — क्लोन करें और उपनिर्देशिका के रूप में जोड़ें
git clone https://github.com/aspose-email-foss/Aspose.Email-FOSS-for-Cpp.git
आपके प्रोजेक्ट CMakeLists.txt में:
cmake_minimum_required(VERSION 3.26)
project(my_project)
add_subdirectory(Aspose.Email-FOSS-for-Cpp)
add_executable(my_app main.cpp)
target_link_libraries(my_app PRIVATE AsposeEmailFoss::AsposeEmailFoss)
चरण 2 — शामिल करें और उपयोग करें
#include <iostream>
#include "aspose/email/foss/msg/mapi_message.hpp"
namespace aef = aspose::email::foss;
int main()
{
// Create a message
auto msg = aef::msg::mapi_message::create("Hello from C++", "Body text here");
msg.save(std::filesystem::path("hello.msg"));
// Round-trip to EML
auto loaded = aef::msg::mapi_message::from_file(
std::filesystem::path("hello.msg"), false);
loaded.save_to_eml(std::filesystem::path("hello.eml"));
std::cout << "Done\n";
}
चरण 3 — निर्माण
cmake -B build -DCMAKE_BUILD_TYPE=Release
cmake --build build
समर्थित फ़ॉर्मेट
| फ़ॉर्मेट | एक्सटेंशन | पढ़ें | लिखें |
|---|---|---|---|
| MSG (आउटलुक संदेश) | .msg | ✓ | ✓ |
| EML (RFC 5322 / MIME) | .eml | ✓ | ✓ |
| CFB (Compound File Binary) | .msg, .cfb | ✓ | ✓ |
ओपन सोर्स और लाइसेंसिंग
Aspose.Email FOSS for C++ MIT लाइसेंस के तहत जारी किया गया है।
पूर्ण स्रोत GitHub पर उपलब्ध है aspose-email-foss/Aspose.Email-FOSS-for-Cpp.
व्यावसायिक उपयोग बिना रॉयल्टी के अनुमति है।
लाइब्रेरी में C++17 कंपाइलर और CMake 3.26 या बाद के संस्करण के अलावा कोई रनटाइम निर्भरताएँ नहीं हैं।