Ievads
Aspose.Email FOSS for .NET ir MIT licences, atkarību brīva C# bibliotēka, kas paredzēta darbam ar
Outlook MSG failiem, Compound File Binary (CFB) konteineriem un EML ziņām. Šis raksts izpēta
katru galveno funkcionalitātes jomu, izmantojot darbināmus koda piemērus, kas ņemti tieši no bibliotēkas
testu komplekta — katrs šeit parādītais klases nosaukums un metodes paraksts ir pārbaudīts pret
source repository.
Instalējiet ar vienu komandu — nav Microsoft Outlook, nav COM interop, nav vietējo bibliotēku:
dotnet add package Aspose.Email.Foss
Galvenās funkcijas
Lasīt un pārbaudīt MSG failus
MapiMessage.FromStream() un MapiMessage.FromFile() atver jebkuru Outlook .msg failu un
atklāj tā pilnu saturu: tematu, vienkārša teksta ķermeni, HTML ķermeni, sūtītāja vārdu, sūtītāja e-pasta
adresi, piegādes laiku, interneta ziņojuma ID, saņēmējus un pielikumus. Nav nepieciešama Outlook
instalācija — visa MSG un CFB slānis ir īstenots pārvaldītā C#.
using System.IO;
using Aspose.Email.Foss.Msg;
using var stream = File.OpenRead("sample.msg");
var message = MapiMessage.FromStream(stream);
Console.WriteLine(message.Subject);
Console.WriteLine(message.SenderEmailAddress);
Console.WriteLine(message.Body);
foreach (var recipient in message.Recipients)
Console.WriteLine($"To: {recipient.EmailAddress}");
foreach (var attachment in message.Attachments)
Console.WriteLine($"Attachment: {attachment.Filename} ({attachment.MimeType})");
Izveidot MSG failus no nulles
MapiMessage.Create() izveido pilnīgu e-pastu atmiņā. Iestatiet SenderName,
SenderEmailAddress, HtmlBody, InternetMessageId un MessageDeliveryTime kā
īpašības pēc izveides, pēc tam pievienojiet saņēmējus ar AddRecipient() un faila vai straumes
pielikumus ar AddAttachment(). Serializējiet ar message.Save() — atgriež byte[]
vai raksta tieši uz ceļu vai Stream.
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");
message.AddAttachment("note.txt", "abc"u8.ToArray(), "text/plain");
using var output = File.Create("hello.msg");
message.Save(output);
Pārveidot EML uz MSG (un atpakaļ)
MapiMessage.LoadFromEml() pieņem faila ceļu, Stream vai byte[], kas satur
standarta RFC 5322 / MIME ziņojumu. Iebūvētais MIME parsētājs saglabā tematu, vienkāršā teksta
ķermeni, HTML ķermeni, sūtītāju, saņēmējus un visus pielikumus — ieskaitot iekļautus attēlus arContent-ID galvenēm. SaveToEml() serializē atpakaļ uz MIME, lai nodrošinātu pilnīgu EML ↔ MSG pāreju
bez jebkādas ārējās MIME bibliotēkas.
using System.IO;
using Aspose.Email.Foss.Msg;
using var input = File.OpenRead("message.eml");
var message = MapiMessage.LoadFromEml(input);
// Inspect fields parsed from MIME headers
Console.WriteLine(message.Subject);
Console.WriteLine(message.SenderEmailAddress);
Console.WriteLine(message.HtmlBody);
// Save as MSG for Outlook-compatible storage
using var msgOutput = File.Create("message.msg");
message.Save(msgOutput);
// Round-trip back to EML
using var emlOutput = File.Create("roundtrip.eml");
message.SaveToEml(emlOutput);
Iegultie ziņojuma pievienojumi
MSG fails var saturēt citu MSG failu kā pielikumu — izplatīts raksts pāradresēto e-pasta ķēdēs. AddEmbeddedMessageAttachment() pievieno MapiMessage objektu kā iegultu .msg pielikumu. Lasot, MapiAttachment.IsEmbeddedMessage norāda uz iegulto tipu, un EmbeddedMessage tieši atklāj iegulto MapiMessage.
using System.IO;
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");
var attachment = loaded.Attachments[0];
if (attachment.IsEmbeddedMessage)
Console.WriteLine($"Embedded subject: {attachment.EmbeddedMessage!.Subject}");
CFB konteineru lasīšana un rakstīšana
Outlook MSG faili ir izveidoti, balstoties uz Compound File Binary (CFB) formātu — hierarhisku bināru
konteineru, kas līdzīgs FAT failu sistēmai. CfbReader atklāj pilnu direktoriju koku: iterējiet
krātuves un plūsmas ar IterChildren(), pārvietojieties uz konkrētām ierakstiem, izmantojot ceļa ķēdi, ar
ResolvePath(), un nolasiet neapstrādātos plūsmas baitus ar GetStreamData(). CfbWriter.ToBytes()
serializē CfbDocument baitos — noderīgi, lai izveidotu pielāgotus CFB dokumentus vai
pārbaudītu bezzaudējuma pārvēršanas ciklus.
using System.Text;
using Aspose.Email.Foss.Cfb;
// Build a CFB document from scratch
var document = new CfbDocument();
document.Root.AddStream(new CfbStream("ReadMe", 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);
// Read it back
using var reader = new CfbReader(bytes);
var entry = reader.ResolvePath(["DataStore", "Payload"]);
if (entry is not null)
{
var data = reader.GetStreamData(entry.StreamId);
Console.WriteLine(Encoding.UTF8.GetString(data)); // "content"
}
Tipizēta MAPI īpašības piekļuve
MapiPropertyCollection nodrošina tipizētu MAPI īpašību piekļuvi jebkuram MSG vai glabāšanas objektam.
The CommonMessagePropertyId uzskaitījums aptver visus standarta MAPI īpašību identifikatorus — Subject, Body, BodyHtml, SenderName, SenderEmailAddress, MessageDeliveryTime, InternetMessageId, kā arī piesaistes īpašības, ieskaitot AttachFilename, AttachMimeTag un AttachContentId.
Izmantojiet SetProperty() un GetPropertyValue(), lai lasītu un rakstītu patvaļīgas īpašības, kas pārsniedz nosauktos ērtuma laukus uz MapiMessage.
using Aspose.Email.Foss.Msg;
var message = MapiMessage.FromFile("sample.msg");
// Typed 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}");
Ātrais sākums
dotnet add package Aspose.Email.Foss
using System.IO;
using Aspose.Email.Foss.Msg;
// Read an MSG file
using var stream = File.OpenRead("sample.msg");
var message = MapiMessage.FromStream(stream);
Console.WriteLine(message.Subject);
Console.WriteLine(message.SenderEmailAddress);
foreach (var recipient in message.Recipients)
Console.WriteLine($"To: {recipient.EmailAddress}");
foreach (var attachment in message.Attachments)
Console.WriteLine($"Attachment: {attachment.Filename} ({attachment.MimeType})");
Atbalstītie formāti
| Formāts | Paplašinājums | Lasīt | Rakstīt |
|---|---|---|---|
| Compound File Binary | .cfb | ✓ | ✓ |
| Outlook Message | .msg | ✓ | ✓ |
| MIME / EML | .eml | ✓ | ✓ |
Atvērtā pirmkods un licencēšana
Aspose.Email FOSS for .NET ir izlaists zem MIT licences. Izmantojiet to brīvi personīgajos, komerciālajos un atvērtā koda projektos bez lietošanas ierobežojumiem. Avota kods ir pieejams vietnē github.com/aspose-email-foss/Aspose.Email-FOSS-for-.Net.