Bevezetés
Az e-mail üzenetek programmatizált elemzése az archiválási eszközök, a megfelelőségi csővezetékek és a migrációs segédeszközök közös követelménye.Az Outlook MSG fájlok MAPI tulajdonsági folyamokkal rendelkező Compound File Binary (CFB) konténerformátumot használnak, míg az EML fájlok a MIME szabványt követelik.Minden formátum óvatos kezelést igényel a kódolásokkal, összecsukott fejlényekkel és fészkelett mellékletekhez.
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 - A NuGet csomag.
Ez a bejegyzés az olvasmánykönyvtárban szereplő üzenet-elemzés képességét mutatja meg, kezdve a lemeztől származó fájlok feltöltésétől egészen az egyes MAPI tulajdonságok kivonásáig és formátumok közötti konvertásig.
Mit tartalmaz?
MSG fájlok betöltése
A Bizottság MapiMessage A kézbesítéshez szükséges adatot egy fájl útvonalából vagy folyóból töltheti be, opcionális szigorú hitelesítési jelzővel.
// 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}");
A visszatértek. MapiMessage a közös mezők típusos tulajdonságait mutatja ki, beleértve: Subject, Body, HtmlBody, SenderName, SenderEmailAddress, InternetMessageId,és a következők: MessageDeliveryTime.
EML üzenetek betöltése
Az EML fájlok a MIME formátumot használják. MapiMessage.LoadFromEml elfogad egy fájl útvonalat, a Stream, vagy a byte[] és ugyanazt adja vissza. MapiMessage objektum, így egy egységes API-t használsz a forrásformátumotól függetlenül.
// 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()}");
A parser elhelyezi a összecsukott fejléceket, az Base64-et és a citált nyomtatható átviteli kódokat, valamint a többfelvevő To/Cc mezőket.
A címzettekkel és a mellékletekkel való együttműködés
A üzenet feltöltésekor a címzettek és mellékletek erősen betűzött gyűjteményként állnak rendelkezésre. MapiRecipient a szállítmányok EmailAddress, DisplayName,és a következők: RecipientType Minden mező. MapiAttachment előirányzik: Filename, Data, MimeType,és a következők: 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);
}
A beágyazott üzenetcsomagok is támogathatók. MapiAttachment.IsEmbeddedMessage az a true, a EmbeddedMessage a tulajdonság egy beágyazottat ad vissza. MapiMessage hogy rekurzíven ellenőrizheti.
MAPI tulajdonságok elérése
A fejlett forgatókönyveknél minden üzenet, címzett és melléklet egy Properties A típus gyűjtése MapiPropertyCollection.Az egyes MAPI tulajdonságokat a tulajdonsági azonosítójuk és típuskódja alapján olvashatja, hozzáadhatja és eltávolíthatja.
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);
A Bizottság CommonMessagePropertyId az enum jól ismert MAPI tulajdonsági azonosítókat határozza meg a központi üzenet szemantikájára, testmezőre, szállítási fejlékre és csatolt metaadatokra.
Az MSG és az EML közötti átváltás
A elemzett üzenetet mindkét formátumban lehet visszahelyezni. Save() írja az MSG byte-okat, míg a SaveToEml() Ez egyszerűvé teszi a formátumkonverziót.
// 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");
Mindkét módszer is elfogad egy Stream az adatrendszer érintése nélkül memóriában történő feldolgozásra szolgáló paraméter.
Gyors kezdés
A csomag telepítése a NuGet-ből:
dotnet add package Aspose.Email.FOSSAkkor olvasd el az első üzeneted:
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.");
Támogatott formátumok
| Formátum | A Bizottság | Olvasd! | Írj! |
|---|---|---|---|
| Outlook MSG | .msg | Igen, igen. - Az is jó. | Igen, igen. - Az is jó. |
| MIME (EML) | .eml | Igen, igen. - Az is jó. | Igen, igen. - Az is jó. |
| Bináris összetett fájl | .cfb | Igen, igen. - Az is jó. | Igen, igen. - Az is jó. |
Nyitott forráskódú és licenckészítés
Aspose.Email FOSS for .NET is released under the MIT license. The full source code is available on GitHub at Az e-mailre vonatkozó adatbázisok és a weboldalra való hozzáférés..A hozzájárulások, a kérések és az előterjesztés minden esetben szívesen fogadott.
Kezdjük!
- Készítő útmutató részletes dokumentáció és átjáró útmutatók
- Tudásbázis Gyakran feltett kérdések és útmutató cikkek
- API hivatkozás teljes osztály- és módszerreferencia