Įvadas
Aspose.Email FOSS for .NET yra MIT licencijuota, nuo priklausomybių nepriklausanti C# biblioteka, skirta dirbti su
Outlook MSG failais, Compound File Binary (CFB) konteineriais ir EML žinutėmis. Šiame įraše apžvelgiama
kiekviena pagrindinė funkcijų sritis, naudojant veikiantį kodą, tiesiogiai paimtą iš bibliotekos
testų rinkinio — kiekvienas čia parodytas klasės pavadinimas ir metodo parašas patikrintas pagal
source repository.
Įdiekite vienu komandu — be Microsoft Outlook, be COM tarpinės sąveikos, be natūralių bibliotekų:
dotnet add package Aspose.Email.Foss
Pagrindinės funkcijos
Skaityti ir peržiūrėti MSG failus
MapiMessage.FromStream() ir MapiMessage.FromFile() atveria bet kurią Outlook .msg bylą ir
atskleidžia jos visą turinį: temą, paprasto teksto kūną, HTML kūną, siuntėjo vardą, siuntėjo el. pašto
adresą, pristatymo laiką, internetinio pranešimo ID, gavėjus ir priedus. Outlook
instaliacija nėra būtina — visas MSG ir CFB sluoksnis įgyvendintas valdomame 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})");
Kurti MSG failus nuo nulio
MapiMessage.Create() sukuria pilną el. laišką atmintyje. Nustatykite SenderName,
SenderEmailAddress, HtmlBody, InternetMessageId ir MessageDeliveryTime kaip
savybes po sukūrimo, tada pridėkite gavėjus naudodami AddRecipient() ir failų arba srauto
priedus naudodami AddAttachment(). Serializuokite su message.Save() — grąžina byte[]
arba rašo tiesiai į kelią arba 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);
Konvertuoti EML į MSG (ir atgal)
MapiMessage.LoadFromEml() priima failo kelią, Stream arba byte[], kuriame yra
standartinis RFC 5322 / MIME pranešimas. Įmontuotas MIME analizatorius išsaugo temą, paprasto teksto
kūną, HTML kūną, siuntėją, gavėjus ir visus priedus — įskaitant įterptus vaizdus suContent-ID antraštėmis. SaveToEml() serializuoja atgal į MIME, kad būtų pilnas EML ↔ MSG ciklas
be jokios išorinės MIME bibliotekos.
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);
Įterptų žinučių priedai
MSG failas gali turėti kitą MSG failą kaip priedą — įprasta schema persiųstų el. laiškų grandinėse. AddEmbeddedMessageAttachment() prideda MapiMessage objektą kaip įdėtą .msg priedą. Skaitant, MapiAttachment.IsEmbeddedMessage signalizuoja įterptą tipą ir EmbeddedMessage tiesiogiai atskleidžia įdėtą 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 Container skaitymas ir rašymas
Outlook MSG failai yra sukurti pagal Compound File Binary (CFB) formatą — hierarchinį dvejetainį
konteinerį, panašų į FAT failų sistemą. CfbReader atskleidžia visą katalogų medį: iteruokite
saugojimus ir srautus su IterChildren(), naršykite iki konkrečių įrašų pagal kelio grandinę suResolvePath(), ir skaitykite neapdorotus srauto baitus su GetStreamData(). CfbWriter.ToBytes()
serializuoja CfbDocument į baitus — naudinga kuriant pasirinktinius CFB dokumentus arba
tikrinant be nuostolių atliekamus keliones.
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"
}
Tipizuota MAPI savybės prieiga
MapiPropertyCollection suteikia tipizuotą MAPI savybių prieigą bet kuriam MSG arba saugojimo objektui.CommonMessagePropertyId išvardinimas apima visus standartinius MAPI savybių identifikatorius — Subject,Body, BodyHtml, SenderName, SenderEmailAddress, MessageDeliveryTime,InternetMessageId, ir priedų savybes, įskaitant AttachFilename, AttachMimeTag,
ir AttachContentId. Naudokite SetProperty() ir GetPropertyValue() norėdami skaityti ir rašyti
bet kokias savybes, viršijančias pavadintus patogumo laukus, esančius 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}");
Greitas pradžia
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})");
Palaikomi formatai
| Formatas | Plėtinys | Skaityti | Rašyti |
|---|---|---|---|
| Compound File Binary | .cfb | ✓ | ✓ |
| Outlook Message | .msg | ✓ | ✓ |
| MIME / EML | .eml | ✓ | ✓ |
Atviro kodo ir licencijavimas
Aspose.Email FOSS for .NET išleidžiamas pagal MIT licenciją. Naudokite jį laisvai asmeniniuose, komerciniuose ir atviro kodo projektuose be jokių naudojimo apribojimų. Šaltinio kodas prieinamas adresu github.com/aspose-email-foss/Aspose.Email-FOSS-for-.Net.