Wie man Dateien in C# liest MSG

Wie man Dateien in C# liest MSG

Diese Anleitung zeigt, wie man Outlook öffnet. .msg Datei und ihren Inhalt extrahieren, indem sie Aspose.Email FOSS for .NET. You will access the subject, body, sender, recipients, and attachment list using MapiMessage.Die Bibliothek unterstützt das Laden von einem Dateipfad, ein Stream, oder roh byte[].

Schritt 1 Installieren des Pakets

dotnet add package Aspose.Email.FOSS

Schritt 2 Laden der Datei MSG

using Aspose.Email.Foss.Msg;

using var message = MapiMessage.FromFile("sample.msg");

Sie können auch von einem Stream laden:

using var stream = File.OpenRead("sample.msg");
using var message = MapiMessage.FromStream(stream);

Schritt 3 Nachrichtenfelder lesen

Console.WriteLine($"Subject: {message.Subject}");
Console.WriteLine($"From: {message.SenderName} <{message.SenderEmailAddress}>");
Console.WriteLine($"Date: {message.MessageDeliveryTime}");
Console.WriteLine($"Body: {message.Body}");

Schritt 4 Lesen der Empfänger

foreach (var recipient in message.Recipients)
{
    Console.WriteLine($"{recipient.DisplayName} <{recipient.EmailAddress}>");
}

Schritt 5 Anhangs auszuziehen

foreach (var attachment in message.Attachments)
{
    Console.WriteLine($"Saving: {attachment.Filename}");
    File.WriteAllBytes(attachment.Filename!, attachment.Data);
}

Für eingebettete Nachrichtenanlagen:

foreach (var attachment in message.Attachments)
{
    if (attachment.IsEmbeddedMessage)
    {
        Console.WriteLine($"Embedded: {attachment.EmbeddedMessage!.Subject}");
    }
}

Vollständiges Beispiel

using Aspose.Email.Foss.Msg;

using var message = MapiMessage.FromFile("sample.msg");

Console.WriteLine($"Subject: {message.Subject}");
Console.WriteLine($"From: {message.SenderName} <{message.SenderEmailAddress}>");

foreach (var r in message.Recipients)
    Console.WriteLine($"  {r.DisplayName} <{r.EmailAddress}>");

foreach (var a in message.Attachments)
{
    if (a.IsEmbeddedMessage)
        Console.WriteLine($"  Embedded: {a.EmbeddedMessage!.Subject}");
    else
        File.WriteAllBytes(a.Filename!, a.Data);
}
 Deutsch