Εισαγωγή

Το να διαχωρίζετε τα μηνύματα ηλεκτρονικού ταχυδρομείου προγραμματικά είναι μια κοινή απαίτηση για τα εργαλεία αρχείου, τους σωλήνες συμμόρφωσης και τις υπηρεσίες μετανάστευσης. Τα αρχεία MSG του Outlook χρησιμοποιούν τη μορφή δοχείου Compound File Binary (CFB) με ροές ιδιοκτησίας MAPI, ενώ τα αρχείο EML ακολουθούν το πρότυπο MIME. Και οι δύο μορφές απαιτούν προσεκτική χειρισμό κρυπτογράφησης, φακέλους κεφαλών και εγγράφων που έχουν σφιχτεί.

Aspose.Email FOSS for .NET is a free, MIT-licensed C# library that provides a complete read-write API for MSG and EML messages. It targets .NET 8.0+ and has no dependency on Microsoft Outlook or any native COM interop layer. The library is available as the aspose.email.foss Το πακέτο της Νου.

Αυτό το άρθρο περνά μέσα από τις δυνατότητες αναφοράς μηνυμάτων που περιλαμβάνονται στη βιβλιοθήκη, από την φόρτωση αρχείων εκτός δίσκου μέχρι την εξόρυξη μεμονωμένων ιδιοτήτων MAPI και τη μετατροπή μεταξύ μορφών.


Τι περιλαμβάνεται

Εισαγωγή αρχείων MSG

Η MapiMessage Η τάξη είναι το κύριο σημείο εισόδου για να εργαστείτε με τα αρχεία του Outlook MSG. Μπορείτε να φορτώσετε ένα μήνυμα από μια διαδρομή αρχείου ή ροή, με μια επιλεκτική σκληρή επικύρωση σημαία που ξεπερνά οποιαδήποτε δομικά προβλήματα που βρίσκονται στο αρχείο.

// Load an MSG file from disk
var message = MapiMessage.FromFile("meeting-invite.msg");

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

Η επιστροφή του MapiMessage εκθέτει τυποποιημένες ιδιότητες για κοινά πεδία, συμπεριλαμβανομένων των Subject, Body, HtmlBody, SenderName, SenderEmailAddress, InternetMessageId,και MessageDeliveryTime.

Εισαγωγή μηνυμάτων EML

Τα αρχεία EML χρησιμοποιούν τη μορφή MIME. MapiMessage.LoadFromEml Αποδέχεται ένα αρχείο, α Stream,ή α byte[] και επιστρέφει το ίδιο MapiMessage αντικείμενο, έτσι μπορείτε να χρησιμοποιήσετε ένα ενιαίο API ανεξάρτητα από τη μορφή πηγής.

// Load from a file path
var fromFile = MapiMessage.LoadFromEml("newsletter.eml");

// Load from a stream
using var stream = File.OpenRead("newsletter.eml");
var fromStream = MapiMessage.LoadFromEml(stream);

Console.WriteLine($"Subject: {fromStream.Subject}");
Console.WriteLine($"Body: {fromStream.Body?.Trim()}");

Το παρσερό χειρίζεται τα κρυμμένα κεφάλαια, τις κωδικοποιήσεις μεταφοράς Base64 και που μπορούν να εκτυπωθούν με αναφορές, καθώς και τα πεδία To/Cc πολλαπλών παραλήψεων.

Εργασία με παραλήπτες και συσκευασίες

Μόλις φορτωθεί ένα μήνυμα, οι παραλήπτες και τα συνημμένα είναι διαθέσιμα ως συλλογές με ισχυρό τύπο. MapiRecipient Παρουσιάζει EmailAddress, DisplayName,και RecipientType Σκηνές. κάθε MapiAttachment Παρέχει Filename, Data, MimeType,και ContentId.

var message = MapiMessage.FromFile("report.msg");

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

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

Οι ενσωματωμένες συνημμένες ανακοινώσεις υποστηρίζονται επίσης. όταν MapiAttachment.IsEmbeddedMessage Είναι true, το EmbeddedMessage Η ιδιοκτησία επιστρέφει ένα νεκρό MapiMessage Μπορείτε να ελέγξετε επανειλημμένα.

Διαθέσιμος MAPI Ιδιότητες

Για προχωρημένα σενάρια, κάθε μήνυμα, παραλήπτης και προσθήκη εκθέτει ένα Properties Συλλογή τύπου MapiPropertyCollection.Μπορείτε να διαβάσετε, προσθέσετε και να αφαιρέσετε μεμονωμένες ιδιότητες MAPI με το ID ιδιοκτησίας τους και τον κωδικό τύπου.

var message = MapiMessage.FromFile("custom-props.msg");

// Iterate all properties on the message
foreach (var prop in message.Properties.IterProperties())
{
    Console.WriteLine($"Tag: 0x{prop.PropertyTag:X8}, Value: {prop.Value}");
}

// Read a specific property
var subject = message.Properties.Get(
    (ushort)CommonMessagePropertyId.Subject,
    (ushort)PropertyTypeCode.PtypString);

Η CommonMessagePropertyId Το enum καθορίζει τους γνωστούς αναγνωριστές ιδιοτήτων MAPI για τις πυρήνες σημαντικές μηνύματα, τα πεδία σώματος, οι επικεφαλίδες μεταφοράς και τα μεταδεδομένα προσθήκης.

Μετατροπή μεταξύ MSG και EML

Ένα παρασχεμένο μήνυμα μπορεί να αποθηκευτεί πίσω σε οποιαδήποτε μορφή. Save() γράφει μπάτρες MSG, ενώ SaveToEml() παράγει το MIME. Αυτό καθιστά την μετατροπή μορφής απλή.

// Load an EML and save as MSG
var message = MapiMessage.LoadFromEml("incoming.eml");
message.Save("converted.msg");

// Load an MSG and save as EML
var msg = MapiMessage.FromFile("outgoing.msg");
msg.SaveToEml("exported.eml");

Και οι δύο μέθοδοι αποδέχονται επίσης ένα Stream παράμετρος επεξεργασίας σε μνήμη χωρίς να αγγίξουμε το σύστημα αρχείων.


Γρήγορη έναρξη

Εγκαταστήστε το πακέτο από το NuGet:

dotnet add package Aspose.Email.FOSS

Ας δούμε το πρώτο σας μήνυμα:

using Aspose.Email.Foss.Msg;

// Load an MSG file
var message = MapiMessage.FromFile("sample.msg");

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

// List attachments
foreach (var att in message.Attachments)
    Console.WriteLine($"  Attachment: {att.Filename} ({att.Data.Length} bytes)");

// Convert to EML
message.SaveToEml("sample.eml");
Console.WriteLine("Saved as EML.");

Υποστηριζόμενες μορφές

ΤΕΧΝΗΕΠΙΤΡΟΦΗΔιαβάστεΓράψε
Ετικέτες MSG.msgΝΑΙΝΑΙ
MIME (EML).emlΝΑΙΝΑΙ
Ετικέτες Binary File.cfbΝΑΙΝΑΙ

Ανοικτή Πηγή & Άδεια Χρήσης

Aspose.Email FOSS for .NET is released under the MIT license. The full source code is available on GitHub at Ετικέτες: e-mail - FOSS - For.Net.Οι συνεισφορές, τα ζητήματα και οι αιτήσεις αναρτήσεων είναι ευπρόσδεκτες.


Ξεκινώντας

Σχετικοί Πόροι