Aspose.Email FOSS per .NET è una libreria C# con licenza MIT, senza dipendenze, per lavorare con i file .msg di Microsoft Outlook, contenitori Compound File Binary (CFB) e messaggi EML. Aggiungi un unico pacchetto NuGet e inizia subito a leggere, creare e processare i messaggi email senza installare Microsoft Outlook o alcun runtime proprietario.
La libreria fornisce due livelli di accesso.
Al livello basso, CfbReader e CfbWriter offrono il controllo completo sui contenitori binari CFB — attraversano le voci di directory, leggono e scrivono i nodi di storage e i dati di stream, e ispezionano la disposizione grezza dei settori.MsgReader e MsgWriter gestiscono il formato MSG sopra CFB, esponendo i flussi di proprietà MAPI, le tabelle dei destinatari e i sotto‑storage degli allegati.
Al livello alto, MapiMessage consente di creare nuovi messaggi da zero, leggere oggetto, corpo, mittente e destinatari, gestire gli allegati e convertire tra i formati MSG ed EML tramite un’implementazione MIME integrata.
La libreria è destinata a .NET 8.0 o versioni successive e non ha dipendenze native, rendendola adatta per Windows, Linux, macOS, contenitori Docker e funzioni serverless. Per funzionalità aggiuntive e supporto commerciale, vedere Aspose.Email for .NET.
CfbReader.FromFile(), CfbReader.FromStream() o new CfbReader(data).IterStorages(), IterStreams(), IterChildren() e IterTree().ResolvePath(names) per individuare uno stream specifico tramite catena di nomi.CfbDocument e serializzali in byte o su file tramite CfbWriter.ToBytes() o CfbWriter.WriteFile().CfbStorage e CfbStream a qualsiasi nodo di archiviazione prima della serializzazione..msg — l’accesso diretto a CFB consente l’ispezione forense e la riparazione.MsgReader.FromFile() o MsgReader.FromStream() e accedi ai flussi di proprietà MAPI sottostanti, ai record dei destinatari e alle sotto‑archiviazioni degli allegati.MsgDocument con MsgWriter.ToBytes() o MsgWriter.WriteFile().MsgStorage, MsgStream e MsgStorage.FindStream().MsgStorage.FindStream() e MsgStorage.FindStorage() per individuare le sotto‑voci nominate..msg dalle directory di archivio ed estrai i metadati o gli allegati..msg programmaticamente e consegnali ai sistemi di posta basati su Outlook.MapiMessage.Create(subject, body), imposta SenderName, SenderEmailAddress e HtmlBody.To, Cc e Bcc tramite AddRecipient() con indirizzo email e nome visualizzato.AddAttachment() o costruisci oggetti MapiAttachment direttamente con Filename, MimeType, ContentId e Data.message.Save() o message.Save(stream) e ricarica con MapiMessage.FromFile() o MapiMessage.FromStream().message.Attachments e salva ogni attachment.Data su disco.message.Subject, message.Body, message.SenderEmailAddress e message.Recipients senza automazione COM..eml standard (RFC 5322 / MIME) in un oggetto MapiMessage completo tramite MapiMessage.LoadFromEml(stream).MapiMessage nuovamente nel formato MIME con message.SaveToEml() o message.SaveToEml(stream)..eml e .msg in un unico formato..eml nei test e verifica che sopravvivano al round-trip MSG senza perdita di dati.Apri un file Outlook MSG da uno stream e stampa l’oggetto — non è necessario Microsoft Outlook.
using System.IO;
using Aspose.Email.Foss.Msg;
using var stream = File.OpenRead("sample.msg");
var message = MapiMessage.FromStream(stream);
Console.WriteLine(message.Subject);
Crea un’email completa con mittente, destinatario e allegato, quindi scrivila in un file MSG.
using System.IO;
using Aspose.Email.Foss.Msg;
var message = MapiMessage.Create("Hello", "Body");
message.SenderName = "Alice";
message.SenderEmailAddress = "alice@example.com";
message.AddRecipient("bob@example.com", "Bob");
using var attachmentStream = new MemoryStream("abc"u8.ToArray());
message.AddAttachment("note.txt", attachmentStream, "text/plain");
using var output = File.Create("hello.msg");
message.Save(output);
Carica un file .eml standard e salvalo come file Outlook .msg utilizzando il parser MIME integrato.
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);
using var emlOutput = File.Create("roundtrip.eml");
message.SaveToEml(emlOutput);