Πώς να εργαστείτε με τα συνημμένα στο C#

Πώς να εργαστείτε με τα συνημμένα στο C#

Αυτό το εγχειρίδιο δείχνει πώς να προσθέσετε, διαβάστε και εξάγετε συνημμένα από τα αρχεία MSG χρησιμοποιώντας Aspose.Email FOSS for .NET. File attachments, stream attachments, embedded messages, and inline image attachments are all covered using MapiAttachment.

Βήμα 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 - Προσθήκη ενσωματωμένων εικόνων

Χρησιμοποιήστε το contentId παράμετρος για να ενσωματώσει μια εικόνα που αναφέρεται από το σώμα HTML:

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");

Βήμα 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
 Ελληνικά