परिचय
Aspose.Email FOSS for .NET एक MIT-लाइसेंस प्राप्त, निर्भरता-रहित C# लाइब्रेरी है जो काम करती है
Outlook MSG फ़ाइलों, Compound File Binary (CFB) कंटेनरों, और EML संदेशों के साथ। यह पोस्ट ले जाती है
प्रत्येक प्रमुख फीचर क्षेत्र के माध्यम से कार्यशील कोड उदाहरणों के साथ जो सीधे लाइब्रेरी के
टेस्ट सूट — यहाँ दिखाए गए प्रत्येक क्लास नाम और मेथड सिग्नेचर को … के विरुद्ध सत्यापित किया गया है
स्रोत रिपॉजिटरी.
एक ही कमांड से इंस्टॉल करें — कोई Microsoft Outlook नहीं, कोई COM इंटरऑप नहीं, कोई नेटिव लाइब्रेरी नहीं:
dotnet add package Aspose.Email.Foss
मुख्य विशेषताएँ
MSG फ़ाइलों को पढ़ें और निरीक्षण करें
MapiMessage.FromStream() और MapiMessage.FromFile() किसी भी Outlook .msg फ़ाइल को खोलते हैं और
उसकी पूरी सामग्री को उजागर करते हैं: विषय, प्लेन‑टेक्स्ट बॉडी, HTML बॉडी, प्रेषक का नाम, प्रेषक का ई‑मेल
पता, डिलीवरी समय, इंटरनेट संदेश ID, प्राप्तकर्ता, और अटैचमेंट। कोई Outlook
इंस्टॉलेशन आवश्यक नहीं है — पूरी MSG और CFB लेयर को मैनेज्ड C# में लागू किया गया है।
using System.IO;
using Aspose.Email.Foss.Msg;
using var stream = File.OpenRead("sample.msg");
var message = MapiMessage.FromStream(stream);
Console.WriteLine(message.Subject);
Console.WriteLine(message.SenderEmailAddress);
Console.WriteLine(message.Body);
foreach (var recipient in message.Recipients)
Console.WriteLine($"To: {recipient.EmailAddress}");
foreach (var attachment in message.Attachments)
Console.WriteLine($"Attachment: {attachment.Filename} ({attachment.MimeType})");
शुरुआत से MSG फ़ाइलें बनाएं
MapiMessage.Create() मेमोरी में एक पूर्ण ईमेल बनाता है। SenderName को सेट करें,
SenderEmailAddress, HtmlBody, InternetMessageId, और MessageDeliveryTime को
प्रॉपर्टीज़ के रूप में निर्माण के बाद, फिर AddRecipient() के साथ प्राप्तकर्ताओं को जोड़ें और फ़ाइल या स्ट्रीम
अटैचमेंट्स को AddAttachment() के साथ जोड़ें। message.Save() के साथ सीरियलाइज़ करें — यह एक byte[]
वापस करता है या सीधे किसी पथ या Stream पर लिखता है।
using System.IO;
using Aspose.Email.Foss.Msg;
var message = MapiMessage.Create("Hello", "Body");
message.SenderName = "Alice";
message.SenderEmailAddress = "alice@example.com";
message.HtmlBody = "<p>Body</p>";
message.InternetMessageId = "<hello@example.com>";
message.MessageDeliveryTime = new DateTime(2024, 1, 2, 3, 4, 5, DateTimeKind.Utc);
message.AddRecipient("bob@example.com", "Bob");
message.AddAttachment("note.txt", "abc"u8.ToArray(), "text/plain");
using var output = File.Create("hello.msg");
message.Save(output);
EML को MSG में बदलें (और वापस)
MapiMessage.LoadFromEml() एक फ़ाइल पथ, एक Stream, या एक byte[] स्वीकार करता है जिसमें
मानक RFC 5322 / MIME संदेश। अंतर्निर्मित MIME पार्सर विषय, प्लेन‑टेक्स्ट
बॉडी, HTML बॉडी, प्रेषक, प्राप्तकर्ता, और सभी अटैचमेंट्स — जिसमें इनलाइन इमेजेज़ के साथContent-ID हेडर। SaveToEml() पूर्ण EML ↔ MSG राउंड‑ट्रिप्स के लिए MIME में वापस सीरियलाइज़ करता है
बिना किसी बाहरी MIME लाइब्रेरी के।
using System.IO;
using Aspose.Email.Foss.Msg;
using var input = File.OpenRead("message.eml");
var message = MapiMessage.LoadFromEml(input);
// Inspect fields parsed from MIME headers
Console.WriteLine(message.Subject);
Console.WriteLine(message.SenderEmailAddress);
Console.WriteLine(message.HtmlBody);
// Save as MSG for Outlook-compatible storage
using var msgOutput = File.Create("message.msg");
message.Save(msgOutput);
// Round-trip back to EML
using var emlOutput = File.Create("roundtrip.eml");
message.SaveToEml(emlOutput);
एम्बेडेड संदेश संलग्नक
एक MSG फ़ाइल में एक अन्य MSG फ़ाइल को अटैचमेंट के रूप में शामिल किया जा सकता है — फ़ॉरवर्ड किए गए ईमेल चेन में यह एक सामान्य पैटर्न है। AddEmbeddedMessageAttachment() एक MapiMessage ऑब्जेक्ट को नेस्टेड .msg अटैचमेंट के रूप में जोड़ता है। पढ़ते समय, MapiAttachment.IsEmbeddedMessage एम्बेडेड प्रकार को संकेत करता है और EmbeddedMessage नेस्टेड MapiMessage को सीधे उजागर करता है।
using System.IO;
using Aspose.Email.Foss.Msg;
var parent = MapiMessage.Create("Outer", "Parent body");
var child = MapiMessage.Create("Inner", "Child body");
child.SenderEmailAddress = "inner@example.com";
parent.AddEmbeddedMessageAttachment(child, "inner.msg");
parent.Save("outer.msg");
var loaded = MapiMessage.FromFile("outer.msg");
var attachment = loaded.Attachments[0];
if (attachment.IsEmbeddedMessage)
Console.WriteLine($"Embedded subject: {attachment.EmbeddedMessage!.Subject}");
CFB कंटेनर पढ़ना और लिखना
Outlook MSG फ़ाइलें Compound File Binary (CFB) फ़ॉर्मेट पर निर्मित होती हैं — एक पदानुक्रमित बाइनरी
कंटेनर जो FAT फ़ाइल सिस्टम के समान है। CfbReader पूर्ण डायरेक्टरी ट्री को उजागर करता है: इटररेट
स्टोरेज और स्ट्रीम को IterChildren() के साथ, पाथ चेन द्वारा विशिष्ट एंट्रीज़ पर नेविगेट करेंResolvePath(), और GetStreamData() के साथ कच्चे स्ट्रीम बाइट्स पढ़ें। CfbWriter.ToBytes()
एक CfbDocument को बाइट्स में सीरियलाइज़ करता है — कस्टम CFB दस्तावेज़ बनाने के लिए उपयोगी
या लॉसलेस राउंड-ट्रिप्स को सत्यापित करने के लिए।
using System.Text;
using Aspose.Email.Foss.Cfb;
// Build a CFB document from scratch
var document = new CfbDocument();
document.Root.AddStream(new CfbStream("ReadMe", Encoding.UTF8.GetBytes("hello")));
var storage = document.Root.AddStorage(new CfbStorage("DataStore"));
storage.AddStream(new CfbStream("Payload", Encoding.UTF8.GetBytes("content")));
byte[] bytes = CfbWriter.ToBytes(document);
// Read it back
using var reader = new CfbReader(bytes);
var entry = reader.ResolvePath(["DataStore", "Payload"]);
if (entry is not null)
{
var data = reader.GetStreamData(entry.StreamId);
Console.WriteLine(Encoding.UTF8.GetString(data)); // "content"
}
टाइप्ड MAPI प्रॉपर्टी एक्सेस
MapiPropertyCollection किसी भी MSG या स्टोरेज ऑब्जेक्ट के लिए टाइप्ड MAPI प्रॉपर्टी एक्सेस प्रदान करता है।
The CommonMessagePropertyId enum covers all standard MAPI property identifiers — Subject,Body, BodyHtml, SenderName, SenderEmailAddress, MessageDeliveryTime,InternetMessageId, और अटैचमेंट प्रॉपर्टीज़ जिसमें AttachFilename, AttachMimeTag,
और AttachContentId शामिल हैं। Use SetProperty() और GetPropertyValue() को पढ़ने और लिखने के लिए
अधिकतर प्रॉपर्टीज़ को नामित सुविधा फ़ील्ड्स से परे MapiMessage पर उपयोग करें।
using Aspose.Email.Foss.Msg;
var message = MapiMessage.FromFile("sample.msg");
// Typed convenience properties
Console.WriteLine(message.Subject);
Console.WriteLine(message.SenderName);
Console.WriteLine(message.MessageDeliveryTime);
// Iterate all MAPI property keys
foreach (var key in message.IterPropertyKeys())
Console.WriteLine($"0x{(ushort)key.PropertyId:X4} / {key.PropertyType}");
त्वरित प्रारंभ
dotnet add package Aspose.Email.Foss
using System.IO;
using Aspose.Email.Foss.Msg;
// Read an MSG file
using var stream = File.OpenRead("sample.msg");
var message = MapiMessage.FromStream(stream);
Console.WriteLine(message.Subject);
Console.WriteLine(message.SenderEmailAddress);
foreach (var recipient in message.Recipients)
Console.WriteLine($"To: {recipient.EmailAddress}");
foreach (var attachment in message.Attachments)
Console.WriteLine($"Attachment: {attachment.Filename} ({attachment.MimeType})");
समर्थित फ़ॉर्मेट
| फ़ॉर्मेट | एक्सटेंशन | पढ़ें | लिखें |
|---|---|---|---|
| Compound File Binary | .cfb | ✓ | ✓ |
| Outlook Message | .msg | ✓ | ✓ |
| MIME / EML | .eml | ✓ | ✓ |
ओपन सोर्स और लाइसेंसिंग
Aspose.Email FOSS for .NET को MIT लाइसेंस के तहत जारी किया गया है। इसे व्यक्तिगत, व्यावसायिक, और ओपन‑सोर्स प्रोजेक्ट्स में बिना किसी उपयोग प्रतिबंध के स्वतंत्र रूप से उपयोग करें। स्रोत कोड उपलब्ध है github.com/aspose-email-foss/Aspose.Email-FOSS-for-.Net.