C# में अटैचमेंट्स के साथ काम कैसे करें

C# में अटैचमेंट्स के साथ काम कैसे करें

यह गाइड दिखाता है कि Aspose.Email FOSS for .NET का उपयोग करके MSG फ़ाइलों से अटैचमेंट कैसे जोड़ें, पढ़ें और निकालें।

चरण 1 — पैकेज स्थापित करें

dotnet add package Aspose.Email.Foss

चरण 2 — फ़ाइल संलग्नक जोड़ें

using Aspose.Email.Foss.Msg;

var message = MapiMessage.Create("Report", "See attached files.");
message.SenderEmailAddress = "alice@example.com";
message.AddRecipient("bob@example.com", "Bob");

// From byte array
message.AddAttachment("report.pdf", File.ReadAllBytes("report.pdf"), "application/pdf");

// From stream
using var stream = File.OpenRead("photo.png");
message.AddAttachment("photo.png", stream, "image/png");

message.Save("with-attachments.msg");

चरण 3 — इनलाइन छवियां जोड़ें

HTML बॉडी द्वारा संदर्भित छवि को एम्बेड करने के लिए contentId पैरामीटर का उपयोग करें:

var message = MapiMessage.Create("Newsletter", "");
message.HtmlBody = "<html><body><img src=\"cid:logo123\"></body></html>";

message.AddAttachment(
    "logo.png",
    File.ReadAllBytes("logo.png"),
    "image/png",
    "logo123");  // Content-ID matches cid: in HTML

message.Save("newsletter.msg");

Step 4 — एटैचमेंट के रूप में संदेश एम्बेड करें

एक अन्य MSG को एम्बेडेड संदेश के रूप में संलग्न करें:

using var inner = MapiMessage.FromFile("original.msg");

var outer = MapiMessage.Create("Forwarded", "See the attached message.");
outer.AddEmbeddedMessageAttachment(inner, "original.msg", "application/vnd.ms-outlook");
outer.Save("forwarded.msg");

चरण 5 — संलग्नक पढ़ें और निकालें

using var message = MapiMessage.FromFile("with-attachments.msg");

foreach (var attachment in message.Attachments)
{
    Console.WriteLine($"Name: {attachment.Filename}");
    Console.WriteLine($"MIME: {attachment.MimeType}");
    Console.WriteLine($"Size: {attachment.Data.Length} bytes");
    Console.WriteLine($"Embedded: {attachment.IsEmbeddedMessage}");
    Console.WriteLine($"Storage: {attachment.IsStorageAttachment}");

    if (attachment.IsEmbeddedMessage)
    {
        // Access the embedded message
        Console.WriteLine($"  Subject: {attachment.EmbeddedMessage!.Subject}");
    }
    else
    {
        // Save to disk
        File.WriteAllBytes(attachment.Filename!, attachment.Data);
    }
}

चरण 6 — स्ट्रीम-आधारित पढ़ना

बड़े अटैचमेंट्स के लिए OpenRead() का उपयोग करें ताकि सब कुछ मेमोरी में लोड करने से बचा जा सके:

foreach (var attachment in message.Attachments)
{
    if (!attachment.IsEmbeddedMessage)
    {
        using var readStream = attachment.OpenRead();
        using var fileStream = File.Create(attachment.Filename!);
        readStream.CopyTo(fileStream);
    }
}

पूर्ण उदाहरण

using Aspose.Email.Foss.Msg;

// Create message with mixed attachments
var msg = MapiMessage.Create("Mixed Attachments", "Demo");
msg.SenderEmailAddress = "demo@example.com";
msg.AddRecipient("test@example.com", "Tester");

// File attachment
msg.AddAttachment("data.csv", File.ReadAllBytes("data.csv"), "text/csv");

// Embedded message
using var embedded = MapiMessage.FromFile("inner.msg");
msg.AddEmbeddedMessageAttachment(embedded, "inner.msg", "application/vnd.ms-outlook");

msg.Save("mixed.msg");
Console.WriteLine($"Attachments: {msg.Attachments.Count}"); // 2
 हिन्दी