บทนำ

Aspose.Email FOSS for .NET เป็นไลบรารี C# ฟรีและโอเพ่นซอร์สที่ให้คุณทำงานกับไฟล์ Outlook MSG, คอนเทนเนอร์ Compound File Binary (CFB) และข้อความ EML โดยตรงในแอปพลิเคชัน .NET ของคุณ — ไม่ต้องใช้ Microsoft Outlook, ไม่ต้องใช้ COM interop, และไม่ต้องการไลบรารีเนทีฟใดๆ แจกจ่ายเป็นแพ็กเกจ NuGet เพียงชุดเดียวและทำงานได้เหมือนกันบน Windows, Linux, macOS, Docker containers, และ serverless functions.

ไลบรารีนี้แก้ปัญหาที่เกิดซ้ำในงานระดับองค์กรและการบูรณาการ: ไฟล์ Outlook .msg
ถูกสร้างโดยผู้ใช้ธุรกิจหลายล้านคน, แต่การแยกวิเคราะห์ไฟล์เหล่านี้โดยไม่มี Outlook ในอดีตต้องอาศัยการทำงานอัตโนมัติของ COM หรือไลบรารีเชิงพาณิชย์ที่มีราคาแพง. Aspose.Email FOSS for .NET ให้การสนับสนุนการอ่าน/เขียนเต็มรูปแบบสำหรับ MSG, คอนเทนเนอร์ไบนารี CFB ที่เป็นพื้นฐาน, และรูปแบบ EML/MIME — ทั้งหมดภายใต้สัญญาอนุญาต MIT โดยไม่มีข้อจำกัดการใช้งาน.

ไม่ว่าคุณจะกำลังสร้าง pipeline การเก็บถาวรอีเมล, เครื่องมือการย้ายข้อมูล, ตัวดึงไฟล์แนบ, หรือเครื่องสร้าง MSG อัตโนมัติ ไลบรารีนี้จะให้การเข้าถึงระดับล่างโดยตรงถึงทุกไบต์ของรูปแบบอีเมล, พร้อมกับ API ระดับสูง MapiMessage ที่ช่วยให้คุณเริ่มต้นได้ในไม่กี่นาที


คุณลักษณะสำคัญ

อ่านไฟล์ Outlook MSG

เปิดไฟล์ .msg ใด ๆ จากเส้นทางหรือสตรีมด้วย MsgReader.FromFile() หรือ MsgReader.FromStream().
เข้าถึงสตรีมคุณสมบัติ MAPI ทั้งหมด, บันทึกผู้รับ, และที่เก็บย่อยของไฟล์แนบที่
ระดับไบต์ดิบผ่าน MsgStorage และ MsgStream.

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

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

สร้างไฟล์ MSG ตั้งแต่เริ่มต้น

สร้างอีเมลที่สมบูรณ์แบบโดยใช้โปรแกรมด้วย MapiMessage.Create(). ตั้งค่าหัวเรื่อง, plain-text เนื้อหา, เนื้อหา HTML, ชื่อผู้ส่ง, ที่อยู่อีเมลผู้ส่ง, เวลาในการจัดส่ง, และ internet message ID, แล้ว เพิ่มผู้รับด้วย AddRecipient() และไฟล์แนบด้วย AddAttachment(). ทำการ Serialize ด้วย message.Save().

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

แปลง EML เป็น MSG (และกลับกัน)

โหลดไฟล์ RFC 5322 มาตรฐาน .eml ลงใน MapiMessage ด้วย MapiMessage.LoadFromEml(), จากนั้นบันทึกเป็นไฟล์ Outlook .msg — หรือย้อนกระบวนการด้วย MapiMessage.SaveToEml(). ตัวแยกวิเคราะห์ MIME ในตัวจะคงรักษาหัวเรื่อง, เนื้อหา, เนื้อหา HTML, ผู้ส่ง, ผู้รับ, และไฟล์แนบ ผ่านการเดินทางรอบเต็มระหว่าง EML ↔ MSG.

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

การเข้าถึงคอนเทนเนอร์ CFB ระดับต่ำ

ไฟล์ Outlook MSG ถูกสร้างบนรูปแบบ Compound File Binary (CFB) — ตัวคอนเทนเนอร์ไบนารีแบบลำดับชั้น
คอนเทนเนอร์ที่คล้ายกับระบบไฟล์ CfbReader เปิดเผยโครงสร้างไดเรกทอรีทั้งหมด: ทำการวนซ้ำ storages
และ streams ด้วย IterStorages(), IterStreams(), และ IterChildren(), นำทางไปยังรายการเฉพาะ
โดยใช้เส้นทางด้วย ResolvePath(), และอ่านไบต์ของสตรีมดิบด้วย GetStreamData().

CfbWriter ให้คุณสร้างและทำซีเรียลไลซ์เอกสาร CFB ตั้งแต่ต้น สร้าง CfbDocument, แนบโหนด CfbStorage และ CfbStream, แล้วเรียก CfbWriter.ToBytes() หรือ CfbWriter.WriteFile() เพื่อทำซีเรียลไลซ์.

การเข้าถึงคุณสมบัติ MAPI และไฟล์แนบ

คลาส MapiPropertyCollection ให้การเข้าถึงคุณสมบัติ MAPI ที่มีประเภทสำหรับอ็อบเจ็กต์ MSG หรือ storage ใด ๆ: ใช้ Get(), Set(), Add(), และ Remove() กับค่า enum มาตรฐาน CommonMessagePropertyId หรือ PropertyTypeCode. เข้าถึงเมตาดาต้าและข้อมูลไบนารีของไฟล์แนบผ่านคุณสมบัติ MapiAttachment: Filename, MimeType, ContentId, และ Data.


เริ่มต้นอย่างรวดเร็ว

ติดตั้งแพ็กเกจ:

dotnet add package Aspose.Email.Foss

อ่านหัวเรื่องจากไฟล์ MSG:

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);
foreach (var recipient in message.Recipients)
    Console.WriteLine($"To: {recipient.EmailAddress}");
foreach (var attachment in message.Attachments)
    Console.WriteLine($"Attachment: {attachment.Filename} ({attachment.MimeType})");

รูปแบบที่รองรับ

รูปแบบส่วนขยายอ่านเขียน
ไฟล์ไบนารีแบบคอมพาวด์.cfb
ข้อความ Outlook.msg
MIME / EML.eml

โอเพนซอร์สและการให้สิทธิ์

Aspose.Email FOSS for .NET ถูกเผยแพร่ภายใต้ MIT license คุณสามารถใช้ได้อย่างอิสระในโครงการส่วนบุคคล, เชิงพาณิชย์, และโอเพนซอร์สโดยไม่มีข้อจำกัดการใช้งาน โค้ดต้นฉบับสามารถเข้าถึงได้ที่ github.com/aspose-email-foss/Aspose.Email-FOSS-for-.Net.


เริ่มต้นใช้งาน