Χαρακτηριστικά και λειτουργίες

Χαρακτηριστικά και λειτουργίες

Χαρακτηριστικά και λειτουργίες

Αυτή η σελίδα καλύπτει κάθε κύριο χαρακτηριστικό της Aspose.Email FOSS for .NET Με παράδειγμα C#.


Διαβάστε τα αρχεία MSG

Κατεβάστε ένα αρχείο MSG από μια διαδρομή ή ροή και να έχετε πρόσβαση σε όλες τις ιδιότητές του:

using System.IO;
using Aspose.Email.Foss.Msg;

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

Console.WriteLine(message.Subject);
Console.WriteLine(message.Body);
Console.WriteLine(message.HtmlBody);
Console.WriteLine(message.SenderName);
Console.WriteLine(message.SenderEmailAddress);
Console.WriteLine(message.MessageDeliveryTime);
Console.WriteLine(message.InternetMessageId);

Χρησιμοποιήστε strict: false Για την ακατάλληλη παρσινγκ των μη τυποποιημένων αρχείων MSG:

var message = MapiMessage.FromFile("message.msg", strict: false);

Ελέγξτε ValidationIssues Για να αναθεωρήσετε οποιαδήποτε μορφή προειδοποιήσεων χωρίς ρίχνοντας:

foreach (var issue in message.ValidationIssues)
    Console.WriteLine($"Warning: {issue}");

Δημιουργία αρχείων MSG

Δημιουργήστε ένα πλήρες email με MapiMessage.Create() και να σκηνοθετήσει με Save():

using System.IO;
using Aspose.Email.Foss.Msg;

var message = MapiMessage.Create("Hello", "Body");
message.SenderName = "Alice";
message.SenderEmailAddress = "alice@example.com";
message.HtmlBody = "<p>Body</p>";
message.InternetMessageId = "<hello@example.com>";
message.MessageDeliveryTime = new DateTime(2024, 1, 2, 3, 4, 5, DateTimeKind.Utc);

message.AddRecipient("bob@example.com", "Bob");

using var output = File.Create("hello.msg");
message.Save(output);

Save() Χωρίς λόγους επιστρέφει η byte[]. Save(path) Γράφει σε ένα αρχείο δρόμο απευθείας.


Αποδεκτές

Προσθέστε To, Cc,και Bcc Οι παραλήπτες με AddRecipient():

message.AddRecipient("alice@example.com", "Alice");
message.AddRecipient("bob@example.com", "Bob", MapiMessage.RecipientTypeCc);
message.AddRecipient("carol@example.com", "Carol", MapiMessage.RecipientTypeBcc);

Εισάγετε τους αποδέκτες από ένα φορτισμένο μήνυμα:

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

ΑΣΤΥΝΟΜΙΑ

Προσθήκη αρχείων ή συνημμένα με μεταδεδομένα:

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

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

// Inline image with Content-ID
message.AddAttachment("logo.png", logoBytes, "image/png", contentId: "logo@cid");

Διαβάστε τα παραρτήματα από ένα φορτισμένο μήνυμα:

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

Εμφυλίες μηνύματος

ΑΡΧΙΣΤΕ ΜΙΑ MapiMessage μέσα σε άλλο - κοινό στις αλυσίδες ηλεκτρονικού ταχυδρομείου:

using Aspose.Email.Foss.Msg;

var parent = MapiMessage.Create("Outer", "Parent body");
var child = MapiMessage.Create("Inner", "Child body");
child.SenderEmailAddress = "inner@example.com";
parent.AddEmbeddedMessageAttachment(child, "inner.msg");

parent.Save("outer.msg");

Διαβάστε τα ενσωματωμένα μηνύματα:

var loaded = MapiMessage.FromFile("outer.msg");
foreach (var attachment in loaded.Attachments)
{
    if (attachment.IsEmbeddedMessage)
    {
        Console.WriteLine($"Embedded: {attachment.EmbeddedMessage!.Subject}");
    }
}

EML και MIME μετατροπή

Εισαγωγή RFC 5322 .eml Εισαγωγή σε A MapiMessage Για το Outlook-συμβατό αποθήκευση:

using System.IO;
using Aspose.Email.Foss.Msg;

using var input = File.OpenRead("message.eml");
var message = MapiMessage.LoadFromEml(input);

using var msgOutput = File.Create("message.msg");
message.Save(msgOutput);

Μετατρέψτε το EML από ένα αρχείο MSG:

var message = MapiMessage.FromFile("message.msg");
using var emlOutput = File.Create("roundtrip.eml");
message.SaveToEml(emlOutput);

LoadFromEml() Επίσης, αποδέχεται το A string Ο δρόμος ή byte[]. SaveToEml() Χωρίς επιχειρήματα Επιστρέφει ο Α byte[].Στόχος, σώμα, HTML σώματα, αποστολέας, παραλήπτες και όλα τα προσάρτημα (συμπεριλαμβανομένων των εικόνων με Content-ID) διατηρούνται μέσω πλήρους EML ↔ MSG γύρο-δρόμους.


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

MapiPropertyCollection παρέχει τυποποιημένη πρόσβαση στις ιδιότητες MAPI μέσω SetProperty() και GetPropertyValue().Χρησιμοποιήστε CommonMessagePropertyId Αξίες enum για τα τυποποιημένα χαρακτηριστικά:

using Aspose.Email.Foss.Msg;

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

// Named convenience properties
Console.WriteLine(message.Subject);
Console.WriteLine(message.SenderName);
Console.WriteLine(message.MessageDeliveryTime);

// Iterate all MAPI property keys
foreach (var key in message.IterPropertyKeys())
    Console.WriteLine($"0x{(ushort)key.PropertyId:X4} / {key.PropertyType}");

Εισαγωγή σε Container Access

Τα αρχεία του Outlook MSG είναι κατασκευασμένα σε μορφή Compound File Binary (CFB). CfbReader ΕΚΔΗΛΩΣΕΙΣ Το πλήρες δέντρο καταλόγου για την επιθεώρηση και την εξόρυξη δεδομένων:

using System.Text;
using Aspose.Email.Foss.Cfb;

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

// Iterate all top-level children
foreach (var entry in reader.IterChildren(CfbConstants.RootStreamId))
    Console.WriteLine($"{(entry.IsStorage() ? "Storage" : "Stream")}: {entry.Name}");

// Navigate to a specific stream by path
var entry2 = reader.ResolvePath(["__substg1.0_0037001E"]);
if (entry2 is not null)
{
    var data = reader.GetStreamData(entry2.StreamId);
    Console.WriteLine(Encoding.Unicode.GetString(data));
}

Κατασκευάστε και σέριλίζετε ένα έγγραφο CFB από το scratch με CfbWriter:

using System.Text;
using Aspose.Email.Foss.Cfb;

var document = new CfbDocument();
document.Root.AddStream(new CfbStream("Notes", Encoding.UTF8.GetBytes("hello")));
var storage = document.Root.AddStorage(new CfbStorage("DataStore"));
storage.AddStream(new CfbStream("Payload", Encoding.UTF8.GetBytes("content")));

byte[] bytes = CfbWriter.ToBytes(document);
File.WriteAllBytes("output.cfb", bytes);

Συμβουλές και βέλτιστες πρακτικές

  • Χρησιμοποιήστε using ή Dispose() Ο ΣΕ MapiMessage και CfbReader για να απελευθερώσετε τα αρχεία χειρισμού
  • Ελέγξτε message.ValidationIssues Μετά την φόρτιση για να ανιχνεύσετε μη τυποποιημένη μορφοποίηση MSG
  • Η strict Παραμέτρων σε FromFile() / FromStream() Ελέγχεται ανοχή σφάλματος - χρήση strict: false για την ομαλή διαγραφή αρχείων από συστήματα τρίτων μερών
  • MapiMessage.Create() παράγει μηνύματα Unicode-string κατά προεπιλογή. unicodeStrings: false Η συμβατότητα του κληρονομικού συστήματος ANSI
  • SaveToEml() Χωρίς επιχειρήματα επιστρέφει byte[] - Κατάλληλο για ροές εργασίας σε μνήμη

κοινά ζητήματα

ΘέμαΑιτίαΦΙΛΕΞΗ
CfbException Όταν φορτώνουμεΔεν υπάρχει έγκυρο αρχείο CFB/MSGΕλέγξτε το αρχείο είναι ένα Outlook MSG
Αδειά Body Μετά το φορτίοΤο σώμα αποθηκεύεται μόνο στο HTMLΕλέγξτε message.HtmlBody Αντί να
Επαναληπτικός τύπος σταθερός δεν βρέθηκεΌχι ένας μοναδικός τύποςΧρησιμοποιήστε MapiMessage.RecipientTypeTo, MapiMessage.RecipientTypeCcMapiMessage.RecipientTypeBcc
0 attachments after LoadFromEmlΗ EML δεν έχει Content-Disposition: attachment Μερικά τμήματαΟι ενσωματωμένες μερίδες (μόνο το περιεχόμενο-ID) εμφανίζονται επίσης στο Attachments

Συνοπτική αναφορά API

ΚλάσηΠεριγραφή
MapiMessageΕισαγωγή μηνυμάτων MSG υψηλού επιπέδου
MapiAttachmentΕισαγωγή ή ενσωματωμένο μήνυμα σε ένα MapiMessage
MapiRecipientΗ συσκευή σε A MapiMessage
MapiPropertyΜοναδική MAPI Εισαγωγή Ιδιοκτησίας
MapiPropertyCollectionΜπάσκετ MAPI Ιδιοκτησίας
CommonMessagePropertyIdΕνότητα τυποποιημένων αναγνωριστών ιδιοκτησίας MAPI
MsgReaderΛιγότερο επίπεδο MSG δομή αναγνώστης
MsgWriterΜείωση MSG Σύνταξη συγγραφέας
CfbReaderCFB δυαδικό αναγνώστη περιέκτη
CfbWriterCFB δυαδικό container συγγραφέας
CfbDocumentΕνημερωτικό έγγραφο CFB για την κατασκευή
CfbStorageΣυσκευή σε έγγραφο CFB
CfbStreamΣύνδεση με το έγγραφο CFB
 Ελληνικά