Uvod u članak
Programsko analiziranje e-pošte je uobičajen zahtjev za arhiviranja alata, usklađenosti cijevi i migracije korisnika. Outlook MSG datoteke koriste Compound File Binary (CFB) format kontejnera s MAPI svojstva tokova, dok EML datotekama slijediti MIME standard . Oba formata zahtijevaju pažljivo rukovanje kodiranja, sklopljene glave, i ugneštene prilozi.
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 NuGet paket.
Ovaj post vodi kroz mogućnosti razmatranja poruka uključene u knjižnicu, od učitavanja datoteka s diska do ekstrakcije pojedinačnih svojstava MAPI-a i pretvaranja između formata.
Što je uključeno u to?
Upisivanje MSG datoteka
U skladu s člankom 1. MapiMessage class je primarna ulazna točka za rad s Outlook MSG datotekama. Možete učitati poruku iz puta ili toka datoteke, uz opcijsku zastavu stroge validacije koja otkriva bilo kakve strukturne probleme pronađene u datoteci.
// 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}");
Vratiti se. MapiMessage Izloženost tipiranih svojstava za zajednička polja, uključujući: Subject, Body, HtmlBody, SenderName, SenderEmailAddress, InternetMessageId, i MessageDeliveryTime.
Upisivanje poruka EML-a
EML datoteke koriste MIME format. MapiMessage.LoadFromEml prihvaća putanje datoteke, a Stream,ili a) byte[] i vraća isti broj. MapiMessage objekt, tako da koristite jedan jedinstven API bez obzira na izvorni format.
// 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()}");
Parser upravlja preklopljenim zaglavljama, kodiranjem za prijenos baznih podataka Base64 i citiranih štampača te poljima To/Cc s više primatelja.
Rad s primateljima i prilozima
Nakon što se poruka učita, primatelji i prilozi su dostupni kao kolekcije sa snažnim tipom. MapiRecipient nosi EmailAddress, DisplayName, i RecipientType Svaka polja. MapiAttachment sadržava: Filename, Data, MimeType, i 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);
}
Podržane su i priložene poruke. MapiAttachment.IsEmbeddedMessage je: true, u skladu s člankom EmbeddedMessage svojstvo vraća ugnezdenu MapiMessage koje možete pregledati rekurzivno.
Pristup svojstvima MAPI-a
Za napredne scenarije, svaka poruka, primalac i prilozi izloži Properties Sva vrsta proizvoda MapiPropertyCollection.Možete čitati, dodati i ukloniti pojedinačne MAPI svojstva po njihovom ID-u osobine i tipu koda.
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);
U skladu s člankom 1. CommonMessagePropertyId enum definiše dobro poznate MAPI identifikacijske svojstva za osnovnu semantiku poruke, polja tijela, transportne zaglavlje i metapodatke priloga.
Preobrazba između MSG-a i EML-ja
Proučena poruka može se spasiti u bilo kojem formatu. Save() Piše MSG bajtove, dok je to uobičajeno. SaveToEml() To čini konverziju formata jednostavnom.
// 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");
Oba metoda također prihvaćaju i: Stream U ovom slučaju, u skladu s člankom 16. stavkom 1. točkom (a) i podstavkom 7. ovog članka.
Brzi početak
Instaliraj paket iz NuGet:
dotnet add package aspose.email.foss
Onda razradite prvu poruku:
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.");
Podržani formati
| Format: | Proračunska sredstva | Čitaj. | Pišite. |
|---|---|---|---|
| Izvješće MSG | .msg | - Da, u redu. | - Da, u redu. |
| MIME (EML) | .eml | - Da, u redu. | - Da, u redu. |
| Komponirana datoteka binarna | .cfb | - Da, u redu. | - Da, u redu. |
Otvoreni izvor i licenciranje
Aspose.Email FOSS for .NET is released under the MIT license. The full source code is available on GitHub at Službenici i korisnici koji su u skladu s člankom 7. stavkom 1. točkom (a) ovog članka..Doprinosi, pitanja i zahtjevi za povlačenjem su dobrodošli.
Početak
- Vodič za programere detaljna dokumentacija i pregledni podaci
- Osnova znanja Česta pitanja i članci o tome kako se to učiniti
- Odgovor na API potpuna referenca za razred i metodu