1. 제품
  2.   Aspose.Email
  3.   Aspose.Email FOSS .NET용 for .NET

Aspose.Email FOSS .NET용

.NET에서 Outlook MSG 파일, CFB 컨테이너 및 EML 메시지를 읽고, 생성하고, 처리합니다 — 무료이며 오픈 소스, Microsoft Outlook에 의존하지 않습니다.

MSG, CFB 및 EML 파일용 오픈 소스 .NET 라이브러리

Aspose.Email FOSS for .NET은 MIT 라이선스를 가진 종속성이 없는 C# 라이브러리로, Microsoft Outlook .msg 파일, Compound File Binary (CFB) 컨테이너 및 EML 메시지를 처리합니다. 단일 NuGet 패키지를 추가하면 Microsoft Outlook이나 어떤 독점 런타임도 설치하지 않고 즉시 이메일 메시지를 읽고, 생성하고, 처리할 수 있습니다.

이 라이브러리는 두 가지 수준의 접근 방식을 제공합니다. 낮은 수준에서는 CfbReaderCfbWriter가 CFB 바이너리 컨테이너에 대한 완전한 제어를 제공하며, 디렉터리 항목을 탐색하고, 스토리지 노드와 스트림 데이터를 읽고 쓰며, 원시 섹터 레이아웃을 검사합니다. MsgReaderMsgWriter는 CFB 위에 있는 MSG 형식을 처리하여 MAPI 속성 스트림, 수신자 테이블 및 첨부 파일 하위 스토리지를 노출합니다. 높은 수준에서는 MapiMessage를 사용하여 처음부터 새 메시지를 만들고, 제목, 본문, 발신자 및 수신자를 읽으며, 첨부 파일을 관리하고, 내장된 MIME 구현을 통해 MSG와 EML 형식 간을 변환할 수 있습니다.

이 라이브러리는 .NET 8.0 이상을 대상으로 하며 네이티브 종속성이 없어 Windows, Linux, macOS, Docker 컨테이너 및 서버리스 함수에 적합합니다.

CFB Container Read and Write

  • Open CFB files: Load existing CFB containers from a file path, stream, or byte array via CfbReader.FromFile(), CfbReader.FromStream(), or new CfbReader(data).
  • Traverse the directory tree: Iterate storages, streams, and children using IterStorages(), IterStreams(), IterChildren(), and IterTree().
  • Resolve paths: Navigate nested storage hierarchies with ResolvePath(names) to locate a specific stream by name chain.
  • Write CFB containers: Build CFB documents programmatically with CfbDocument and serialize to bytes or file via CfbWriter.ToBytes() or CfbWriter.WriteFile().
  • Add storages and streams: Attach CfbStorage and CfbStream nodes to any storage node before serialization.

Where CFB Access Is Used

  • MSG file inspection: CFB is the container format for Outlook .msg files — direct CFB access enables forensic inspection and repair.
  • Custom binary formats: Any legacy application using CFB for data storage can be read or written without a COM dependency.
  • Data recovery: Traverse the full directory tree and extract raw stream bytes from damaged or non-standard CFB files.
  • Binary round-trip testing: Serialize a document to bytes and reload it to verify lossless serialization in automated tests.

MSG File Read and Write

  • Read MSG files: Open Outlook MSG files with MsgReader.FromFile() or MsgReader.FromStream() and access the underlying MAPI property streams, recipient records, and attachment sub-storages.
  • Write MSG files: Produce MSG files from a MsgDocument with MsgWriter.ToBytes() or MsgWriter.WriteFile().
  • Low-level MAPI access: Read top-level property streams, named properties, and attachment data via MsgStorage, MsgStream, and MsgReader.ParseTopLevelPropertyStream().
  • MSG storage navigation: Use MsgStorage.FindStream() and MsgStorage.FindStorage() to locate named sub-entries.

Where MSG Processing Is Used

  • Email archival pipelines: Bulk-read .msg files from archive directories and extract metadata or attachments.
  • Migration tools: Convert MSG collections to standard formats for import into non-Outlook systems.
  • Legal discovery: Parse raw MAPI property streams to extract all message fields including non-standard properties.
  • Automated report delivery: Construct .msg files programmatically and deliver them to Outlook-based mail systems.

High-Level Message API

  • Create messages: Build a complete email with MapiMessage.Create(subject, body), set SenderName, SenderEmailAddress, and HtmlBody.
  • Add recipients: Attach To, Cc, and Bcc recipients via AddRecipient() with email address and display name.
  • Manage attachments: Add file and stream attachments with AddAttachment() or construct MapiAttachment objects directly with Filename, MimeType, ContentId, and Data.
  • Save and reload: Serialize with message.Save() or message.Save(stream) and reload with MapiMessage.FromFile() or MapiMessage.FromStream().

Where the High-Level API Is Used

  • Automated email generation: Generate thousands of personalized MSG files from data records in batch jobs.
  • Test fixture creation: Build known-good MSG files with predictable content for integration test suites.
  • Attachment extraction: Load an MSG file, iterate message.Attachments, and save each attachment.Data to disk.
  • Property inspection: Access message.Subject, message.Body, message.SenderEmailAddress, and message.Recipients without COM automation.

EML and MIME Conversion

  • Load EML into MapiMessage: Parse a standard .eml file (RFC 5322 / MIME) into a full MapiMessage object via MapiMessage.LoadFromEml(stream).
  • Save MapiMessage as EML: Serialize a MapiMessage back to MIME format with message.SaveToEml() or message.SaveToEml(stream).
  • Round-trip fidelity: Subject, body, HTML body, sender, recipients, and attachments are all preserved through EML → MSG → EML round-trips.
  • No external MIME parser: EML parsing is implemented natively within the library — no System.Net.Mail dependency required.

Where EML Conversion Is Used

  • Format bridging: Receive emails as EML from mail servers and convert to MSG for Outlook-compatible storage.
  • Standards compliance: Convert proprietary MSG files to standard MIME for delivery to any mail transport.
  • Archival normalization: Normalize a mixed archive of .eml and .msg files to a single format.
  • Testing workflows: Generate .eml fixtures in tests and verify they survive MSG round-trip without data loss.

Read Subject from an MSG File

Open an Outlook MSG file from a stream and print the subject — no Microsoft Outlook required.

using System.IO;
using Aspose.Email.Foss.Msg;
using var stream = File.OpenRead("sample.msg");

var message = MapiMessage.FromStream(stream);
Console.WriteLine(message.Subject);

Create and Save an MSG Message

Build a complete email with sender, recipient, and attachment, then write it to an MSG file.

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);

Convert EML to MSG

Load a standard .eml file and save it as an Outlook .msg file using the built-in MIME parser.

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);
 한국어