การกรองและสกัดข้อความ MBOX
บทบาทของการกรองข้อความ
เมื่อทำงานกับอาร์ไคฟ์ MBOX ขนาดใหญ่ การโหลดทุกข้อความเข้าสู่หน่วยความจำอาจทำให้ประสิทธิภาพต่ำและไม่จำเป็น ในหลายกรณี นักพัฒนาต้องการสแกนเมตาดาต้าพื้นฐานเช่นหัวเรื่อง ผู้ส่ง ผู้รับ หรือเวลาเท่านั้นเพื่อ:
- แสดงรายการข้อความใน UI
- ใช้ตัวกรองที่กำหนดเองก่อนการสกัด
- สร้างรายงานหรือสรุป
- ทำดัชนีข้อความเพื่อการค้นหา
การกรองช่วยหลีกเลี่ยงค่าใช้จ่ายในการแยกวิเคราะห์เนื้อหาข้อความหรือไฟล์แนบเต็มรูปแบบ ทำให้แอปพลิเคชันเร็วขึ้นและสามารถขยายขนาดได้ดีขึ้น
เข้าถึงเมตาดาต้าข้อความ
Aspose.Email ให้ MboxMessageInfo คลาสที่ออกแบบมาสำหรับเข้าถึงเมตาดาต้าข้อความพื้นฐานโดยไม่ต้องอ่านเนื้อหา MailMessage เต็มรูปแบบ ทำหน้าที่เป็นอ็อบเจกต์สรุปและจะถูกส่งกลับเมื่อเรียก MboxStorageReader.EnumerateMessageInfo().
คุณสมบัติหลักที่เปิดเผยโดย MboxMessageInfo เพื่อดึงข้อมูลเกี่ยวกับข้อความรวมถึง:
- DateTime Date - รับวันที่ของข้อความ
- MailAddress From - รับที่อยู่อีเมลผู้ส่ง
- string Subject - รับหัวข้อของข้อความ
- MailAddressCollection ถึง - รับคอลเลกชันที่อยู่ของผู้รับข้อความ
- MailAddressCollection CC - รับคอลเลกชันที่อยู่ที่ประกอบด้วยผู้รับ CC
- MailAddressCollection Bcc - รับคอลเลกชันที่อยู่ที่ประกอบด้วยผู้รับ BCC ของข้อความ
MboxStorageReader reader = MboxStorageReader.CreateReader(fileName, new MboxLoadOptions());
foreach (var mboxMessageInfo in reader.EnumerateMessageInfo())
{
Console.Writeline($"Subject: {mboxMessageInfo.Subject}");
Console.Writeline($"Date: {mboxMessageInfo.Date}");
Console.Writeline($"From: {mboxMessageInfo.From}");
Console.Writeline($"To: {mboxMessageInfo.To}");
Console.Writeline($"CC: {mboxMessageInfo.CC}");
Console.Writeline($"Bcc: {mboxMessageInfo.Bcc}");
}
สกัดข้อความโดย EntryId
นี้ MboxStorageReader คลาสนี้รวมถึง EnumerateMessageInfo() เมธอด ซึ่งทำให้คุณสามารถวนรอบแต่ละข้อความในไฟล์ MBOX ได้ ด้วยการใช้เมธอดนี้ จะสามารถดึงข้อความแต่ละรายการได้โดยไม่ต้องเดินทางผ่านที่เก็บทั้งหมดซ้ำหลายครั้ง ซึ่งช่วยเพิ่มประสิทธิภาพและลดเวลาในการประมวลผล
นี้ MboxMessageInfo class ให้ EntryId คุณสมบัติ ซึ่งให้การเข้าถึงตัวระบุที่เป็นเอกลักษณ์ของแต่ละข้อความในไฟล์ MBOX ตัวระบุนี้สามารถจัดเก็บในฐานข้อมูลหรือใช้เป็นอ้างอิงเพื่อค้นหาและดึงข้อความเฉพาะได้อย่างรวดเร็วเมื่อจำเป็น
นี้ ExtractMessage(string id) เมธอดใน MboxStorageReader คลาสนี้ช่วยนักพัฒนาในการดึงข้อความโดยอิงจาก EntryId ที่เป็นเอกลักษณ์ของแต่ละข้อความ ด้วย ExtractMessage(string id) เมธอดนี้ คุณสามารถใช้ EntryId ที่เก็บไว้เพื่อดึงข้อความที่สอดคล้องและทำการดำเนินการเพิ่มเติมกับมัน
ตัวอย่างโค้ดต่อไปนี้สาธิตวิธีดึงข้อความจากไฟล์ MBOX โดยใช้ตัวระบุ:
MboxStorageReader reader = MboxStorageReader.CreateReader("my.mbox", new MboxLoadOptions());
foreach (MboxMessageInfo msgInfo in reader.EnumerateMessageInfo())
{
MailMessage eml = reader.ExtractMessage(msgInfo.EntryId, new EmlLoadOptions());
}
กรองและค้นหาอีเมล MBOX ด้วย MailQuery
Aspose.Email สำหรับ .NET ให้ความสามารถในการกรองหรือค้นหาข้อความภายในอาร์ไคฟ์กล่องจดหมายโดยใช้คิวรีแบบกำหนดเอง ทำให้นักพัฒนาสามารถดึงข้อความที่ตรงกับเงื่อนไขเฉพาะเท่านั้น ช่วยปรับปรุงประสิทธิภาพและการใช้งานเมื่อทำงานกับไฟล์อาร์ไคฟ์อีเมลขนาดใหญ่
ตัวอย่างโค้ดต่อไปนี้แสดงวิธีใช้เกณฑ์การค้นหาในไฟล์ที่เก็บเมลด้วย MailQuery API ในตัวอย่างนี้ ข้อความจะถูกเลือกหากหัวเรื่องมีวลี "Project Update" และถูกส่งก่อนวันที่วันนี้
using Aspose.Email.Storage.Mbox;
using Aspose.Email;
var reader = MboxStorageReader.CreateReader("input.mbox", new MboxLoadOptions());
var mqb = new MailQueryBuilder();
mqb.Subject.Contains("Project Update");
mqb.SentDate.Before(DateTime.Today);
foreach (var message in reader.EnumerateMessages(mqb.GetQuery()))
{
Console.WriteLine("Subject: " + message.Subject);
}
กำหนดค่าตัวเลือกการโหลดเมื่ออ่านข้อความจาก MBOX
คุณลักษณะต่อไปนี้จะช่วยให้คุณระบุตัวเลือกต่างๆ ที่เกี่ยวกับการโหลดและประมวลผลข้อความ:
-
คุณสมบัติ MailStorageConverter.MboxMessageOptions - รับหรือกำหนดตัวเลือกการโหลดอีเมลเมื่อทำการแยกวิเคราะห์ที่เก็บ Mbox
-
เมธอด MboxrdStorageReader.ReadNextMessage(EmlLoadOptions options) - พารามิเตอร์ EmlLoadOptions ระบุตัวเลือกเมื่ออ่านข้อความจากที่เก็บ Mbox
var reader = new MboxrdStorageReader(fileName, new MboxLoadOptions());
// Read messages preserving tnef attachments.
var eml = reader.ReadNextMessage(new EmlLoadOptions {PreserveTnefAttachments = true});
MailStorageConverter.MboxMessageOptions(new EmlLoadOptions {PreserveTnefAttachments = true});
// Convert messages from mbox to pst preserving tnef attachments.
var pst = MailStorageConverter.mboxToPst("Input.mbox", "Output.pst");