סינון והוצאת הודעות MBOX
תפקיד סינון ההודעות
בעת עבודה עם ארכיוני MBOX גדולים, טעינת כל הודעה לזיכרון יכולה להיות לא יעילה ולא נחוצה. ברוב המקרים, המפתחים צריכים רק לסרוק מטא‑נתונים בסיסיים כגון נושא, שולח, נמען, או זמן שליחה כדי:
- הצגת רשימת הודעות בממשק משתמש
- החלת מסננים מותאמים לפני ההוצאה
- יצירת דוחות או סיכומים
- אינדוקס הודעות לחיפוש
סינון חוסך את העומס של ניתוח הגוף המלא של הודעות או קבצים מצורפים, מה שהופך את היישומים למהירים וניתנים להרחבה יותר.
גישה למטא‑נתוני הודעה
Aspose.Email מספקת את MboxMessageInfo מחלקה שנועדה לגשת למטא‑נתונים בסיסיים של הודעה מבלי לקרוא את תוכן ה‑MailMessage המלא. היא משמשת כאובייקט סיכום ומוחזרת בעת קריאה ל MboxStorageReader.EnumerateMessageInfo().
מאפיינים מרכזיים שנחשפים על ידי MboxMessageInfo כדי לאסוף מידע על הודעה כולל:
- DateTime תאריך - מקבל את תאריך ההודעה
- MailAddress מאת - מקבל את כתובת השולח
- string נושא - מקבל את נושא ההודעה
- 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 מספקת אפשרות לסנן או לחפש הודעות בתוך ארכיוני תיבות דואר בהתבסס על שאילתות מותאמות. זאת מאפשרת למפתחים לקבל רק את ההודעות שעונות על קריטריונים ספציפיים, לשפר ביצועים ושימושיות בעבודה עם קבצי ארכיוני אימייל גדולים.
דוגמת הקוד שלהלן מציגה כיצד להחיל קריטריוני חיפוש על קובץ אחסון דואר באמצעות API ה‑MailQuery. בדוגמה זו, נבחרות הודעות אם נושאן כולל את הביטוי "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");