MSG फ़ाइलें पढ़ना

MSG फ़ाइलें पढ़ना

MSG फ़ाइलें पढ़ना

Aspose.Email FOSS for .NET Outlook .msg फ़ाइलों को पढ़ने के लिए तीन स्तरों की पहुँच प्रदान करता है: उच्च-स्तरीय MapiMessage API, मध्य-स्तरीय MsgDocument/MsgReader, और निम्न-स्तरीय CfbReader कच्ची बाइनरी निरीक्षण के लिए।


उच्च-स्तरीय: MapiMessage

MapiMessage MSG फ़ाइलों को पढ़ने के लिए प्राथमिक वर्ग है। यह स्ट्रॉन्गली-टाइप्ड प्रॉपर्टीज़ को उजागर करता है
सभी मानक ईमेल फ़ील्ड्स के लिए।

फ़ाइल या स्ट्रीम से लोड करें

using Aspose.Email.Foss.Msg;

// From file path
using var message = MapiMessage.FromFile("sample.msg");

// From stream
using var stream = File.OpenRead("sample.msg");
using var message2 = MapiMessage.FromStream(stream);

वैकल्पिक strict पैरामीटर मान्यकरण व्यवहार को नियंत्रित करता है:

// Strict mode — populates ValidationIssues but does not throw
using var message = MapiMessage.FromFile("sample.msg", strict: true);
foreach (var issue in message.ValidationIssues)
    Console.WriteLine($"Warning: {issue}");

संदेश फ़ील्ड तक पहुंच

Console.WriteLine($"Subject: {message.Subject}");
Console.WriteLine($"Body: {message.Body}");
Console.WriteLine($"HTML Body: {message.HtmlBody}");
Console.WriteLine($"From: {message.SenderName} <{message.SenderEmailAddress}>");
Console.WriteLine($"Message-ID: {message.InternetMessageId}");
Console.WriteLine($"Date: {message.MessageDeliveryTime}");
Console.WriteLine($"Message Class: {message.MessageClass}");

प्राप्तकर्ताओं को पढ़ें

foreach (var recipient in message.Recipients)
{
    var type = recipient.RecipientType switch
    {
        MapiMessage.RecipientTypeTo  => "To",
        MapiMessage.RecipientTypeCc  => "Cc",
        MapiMessage.RecipientTypeBcc => "Bcc",
        _ => "Unknown"
    };
    Console.WriteLine($"  {type}: {recipient.DisplayName} <{recipient.EmailAddress}>");
}

संलग्नक पढ़ें

foreach (var attachment in message.Attachments)
{
    Console.WriteLine($"  {attachment.Filename} ({attachment.MimeType})");

    if (attachment.IsEmbeddedMessage)
    {
        Console.WriteLine($"    Embedded subject: {attachment.EmbeddedMessage!.Subject}");
    }
    else
    {
        File.WriteAllBytes(attachment.Filename!, attachment.Data);
    }
}

मिड-लेवल: MsgDocument और MsgReader

MsgDocument MSG स्टोरेज ट्री — स्टोरेज, स्ट्रीम, प्राप्तकर्ता और अटैचमेंट को संरचनात्मक तत्वों के रूप में पहुँच प्रदान करता है।

using Aspose.Email.Foss.Msg;

var document = MsgDocument.FromFile("sample.msg");

// Navigate storages by role
foreach (var storage in document.Root.Storages)
{
    Console.WriteLine($"{storage.Name} — role: {storage.Role}");

    if (storage.Role == MsgStorageRole.Recipient)
        Console.WriteLine("  (recipient storage)");
    else if (storage.Role == MsgStorageRole.Attachment)
        Console.WriteLine("  (attachment storage)");
}

MsgReader मान्यकरण के साथ केवल‑पढ़ने योग्य पहुँच प्रदान करता है:

using var reader = MsgReader.FromFile("sample.msg", strict: true);
Console.WriteLine($"Validation issues: {reader.ValidationIssues.Count}");

निम्न-स्तर: CfbReader

कच्ची बाइनरी निरीक्षण के लिए, CfbReader का उपयोग करके CFB कंटेनर को सीधे पार करें:

using Aspose.Email.Foss.Cfb;

using var reader = CfbReader.FromFile("sample.msg");

// Traverse the full directory tree
foreach (var (depth, entry) in reader.IterTree())
{
    var indent = new string(' ', depth * 2);
    Console.WriteLine($"{indent}{entry.Name} [type={entry.ObjectType}, size={entry.StreamSize}]");
}

// Read raw stream data
var rootChildren = reader.IterChildren(CfbConstants.RootStreamId);
foreach (var entry in rootChildren)
{
    if (entry.IsStream())
    {
        var data = reader.GetStreamData(entry.StreamId);
        Console.WriteLine($"{entry.Name}: {data.Length} bytes");
    }
}

संबंधित देखें

  • Features — पूर्ण फीचर संदर्भ
  • EML Conversion — EML और MSG के बीच रूपांतरण
  • CFB Containers — निम्न-स्तरीय CFB बाइनरी एक्सेस
 हिन्दी