קבצי אחסון של Mbox

המטרה העיקרית של מאמר זה היא לעזור לך להתעמק בפורמט mbox ולהציע לך פיסות קוד שיכולות לסייע בתהליך קריאת קבצי mbox. תקבל ידע כיצד לנתח קבצי mbox, כמו גם כיצד לגשת, להציג ולאחסן את ההודעות שהם מכילים.

על פורמט Mbox

לפורמט mbox יש משמעות בשל ההיסטוריה הארוכה שלו והקבלה הרחבה שלו כפורמט סטנדרטי לאחסון הודעות דואר אלקטרוני. זהו פורמט קובץ טקסט רגיל המאפשר לשרשר ולשמור מספר הודעות דואר אלקטרוני בקובץ אחד. הפשטות והתאימות של פורמט זה בין לקוחות ומערכות דוא"ל שונות הופכות אותו לבחירה פופולרית לארכיון והעברת נתוני דוא"ל. בנוסף, פורמט mbox שומר על מטא נתונים חיוניים כגון שולח, נמען, נושא וחותמת זמן, מה שמבטיח את שלמות ההודעות.

לקוחות הדוא"ל הפופולריים ביותר התואמים לפורמט זה הם:

  • Thunderbird - לקוח דוא"ל בקוד פתוח בשימוש נרחב המשתמש בפורמט mbox לאחסון הודעות דואר אלקטרוני. הוא מאחסן את כל ההודעות של תיקיה בקובץ אחד עם הסיומת “.mbox”. לנוחות המשתמש ולניהול קל, נוצרים קבצים נפרדים לכל תיקיה בתוך תיבת הדואר. זה מאפשר למשתמשים לייבא ולייצא קבצי mbox בצורה חלקה, מה שהופך אותו ללא מאמץ להעביר נתוני דוא"ל בין Thunderbird ליישומים אחרים התואמים mbox.

  • Apple Mail - לקוח הדוא"ל המוגדר כברירת מחדל במכשירי macOS ו-iOS, המציע תמיכה מובנית בפורמט mbox. זה מאפשר למשתמשים לגשת בקלות, לייבא או להעביר קבצי mbox בתוך Apple Mail על ידי אחסון כל תיקיית תיבת דואר כקובץ נפרד. קבצי Apple Mail מאוחסנים בדרך כלל עם הסיומות “.mbox” או “.mbox.plist”.

  • Evolution - אפליקציה עשירה בתכונות דוא"ל וניהול מידע אישי עבור לינוקס, תומכת גם בפורמט mbox. זה מאפשר למשתמשים לייבא קבצי mbox, מה שמאפשר שילוב חלק של נתוני דואר אלקטרוני בפלטפורמה המקיפה של Evolution.

אלו הן רק כמה דוגמאות של לקוחות דואר אלקטרוני המשתמשים בפורמט mbox. הבנת הפורמט והשימוש בו בלקוחות דוא"ל שונים חיונית כאשר עובדים עם קבצים כאלה באופן פרוגרמטי, מכיוון שהיא עוזרת להבטיח תאימות וניתוח מדויק של נתוני דוא"ל.

ישנן וריאציות שונות של הפורמט, כל אחת עם פרטי יישום משלה. חלק מהפורמטים הנפוצים של mbox כוללים mboxrd, mboxo, mboxcl, mboxcl2. וריאציות אלו נבדלות בעיקר באופן שבו הן מטפלות בהיבטים מסוימים כגון תוחמי הודעות ומטא נתונים. חשוב להיות מודעים להבדלים הללו בעת עבודה עם קובצי mbox, מכיוון שהם יכולים להשפיע על התאימות והניתוח של נתוני הדוא"ל.

Python API לקריאת קבצי Mbox

העבודה עם קבצי mbox ב-Python קלה עם ספריית Aspose.Email for Python שלנו. ממשק API חזק ועשיר בתכונות המציע סט נרחב של תכונות לעיבוד דוא"ל, כגון היכולת לקרוא קבצי mbox, לחלץ הודעות ולתפעל נתוני דוא"ל.

חשוב להזכיר שה-Aspose.Email for Python מציע גם תמיכה מקיפה בפורמטים שונים של mbox, כולל אלו שהוזכרו קודם לכן. זה אומר שאתה יכול לעבוד בצורה חלקה עם קבצים אלה מלקוחות דוא"ל שונים, ללא קשר לפרטי היישום הספציפיים של פורמט mbox. כדי למנף את כוחו של ה-API, אפשר להוריד את ה-DLL שלו או להתקין אותו מ-PyPI באמצעות הפקודה הבאה:

> pip install Aspose.Email-for-Python-via-NET

פתח את קובץ Mbox

כדי להתחיל לעבוד עם קובץ בפורמט mbox, עלינו לפתוח אותו תחילה. ספריית Aspose.Email תעזור לנו בכך.

בקוד שלנו, אנו הולכים לבצע את השלבים המתוארים להלן:

  • הקוד מתחיל בייבוא המודולים הנדרשים מספריית Aspose.Email: מחלקות MboxStorageReader ו-MboxLoadOptions.

  • לאחר מכן, אנו יוצרים מופע של MboxLoadOptions כדי לציין את האפשרויות הרצויות לטעינת הקובץ.

  • לאחר מכן, הגדרנו leaveopen ל-False, מה שמציין שיש לסגור את הקובץ לאחר הקריאה, ומציינים UTF8 כקידוד הטקסט המועדף.

  • לבסוף, אנו יוצרים מופע של מחלקה MboxStorageReader על ידי קריאה למתודה הסטטית createreader, תוך העברת שם קובץ המקור ואת המופע MboxLoadOptions.

קטע הקוד הבא מדגים כיצד לפתוח קובץ mbox:

from aspose.email.storage.mbox import MboxStorageReader, MboxLoadOptions

mbox_load_options = MboxLoadOptions()
mbox_load_options.leave_open = False
mbox_load_options.preferred_text_encoding = 'utf-8'

mbox_reader = MboxStorageReader.create_reader(file_name, mbox_load_options)

רשימת הודעות מקובץ Mbox

מאז שהקובץ נפתח, נוכל לחקור את ההודעות המאוחסנות בו. קטעי הקוד שלהלן מייצגים שתי גישות לרישום הודעות מקובץ mbox.

גישה 1: שיטת EnumerateMessageInfo

הגישה הראשונה לרישום הודעות מקובץ mbox היא שימוש בשיטת enumeratemessageinfo של המחלקה MboxStorageReader. הוא חוזר על ההודעות ומציג מידע בסיסי על ההודעה כגון נושא, שדות מ, עד ותאריך. זה גם מחזיר מזהה הודעה (מזהה כניסה) המשמש מאוחר יותר לקריאת תוכן ההודעה המלא. לגישה זו יש את המאפיינים הבאים:

  • ביצועים: הוא מהיר יותר בהשוואה לגישה אחרת בשל ההתמקדות בקריאה ובצפייה במידע הבסיסי של ההודעה תוך הימנעות מניתוח וטעינת גוף ההודעה במהלך האיטרציה.

  • יעילות: על ידי מיקוד למידע בסיסי בלבד, זה ממזער את צריכת הזיכרון וזמן העיבוד. זה מוערך במיוחד כאשר צריך להתמודד עם קבצים גדולים המכילים הודעות רבות.

כדי לקרוא, לרשום ולהציג הודעות בקובץ mbox, נבצע את השלבים הבאים:

  • ייבא את המודולים הנדרשים מספריית Aspose.Email: מחלקות MboxStorageReader ו-MboxLoadOptions.

  • צור מופע של המחלקה MboxLoadOptions. אובייקט זה יכיל אפשרויות שונות לטעינת הקובץ.

  • הגדר את המאפיינים של האובייקט:

    • הגדר את leaveopen ל-False אם ברצונך לסגור את הקובץ לאחר קריאתו.
    • הגדר את קידוד הטקסט המועדף ל-‘utf-8’ כדי לציין את קידוד הטקסט הרצוי עבור תוכן ההודעה.
  • פתח את הקובץ עם שיטת MboxStorageReader.createreader() של המחלקה MboxStorageReader.

  • חזור על כל הודעה בקובץ באמצעות שיטת enumeratemessageinfo() של אובייקט mboxreader המחלץ פרטים ספציפיים מכל הודעה. בדוגמה שלנו, הם נושאים, כתובת, עד ותאריך.

קטע הקוד הבא מדגים את תהליך האיטרציה דרך ההודעות בשיטת enumeratemessageinfo ושליפת המידע שלהן.

from aspose.email.storage.mbox import MboxStorageReader, MboxLoadOptions

mbox_load_options = MboxLoadOptions()
mbox_load_options.leave_open = False
mbox_load_options.preferred_text_encoding = 'utf-8'

with MboxStorageReader.create_reader(file_name, mbox_load_options) as mbox_reader:
   for message_info in mbox_reader.enumerate_message_info():
        print(message_info.subject)
        print(message_info.from_address)
        print(message_info.to)
        print(message_info.date)

כך נוכל לגשת למאפיינים כמו נושא, מאת, עד ותאריך ולהציג את הפרטים הרלוונטיים.

גישה 2: שיטת EnumerateMessages

בניגוד לגישה הראשונה, השנייה נועדה לחזור ישירות דרך מופעי MailMessage הכלולים בקובץ mbox באמצעות שיטת enumeratemessages. שיטה זו קוראת וטוענת את כל תוכן ההודעה במהלך כל איטרציה, ומאפשרת גישה מיידית לפרטי האימייל המלאים. להלן כמה היבטים מרכזיים של גישה זו:

  • שלמות: הוא מאפשר גישה ועיבוד של כל תוכן ההודעה, כולל הגוף, הקבצים המצורפים, הכותרות וחלקים אחרים.

  • נוחות: גישה זו מתגלה כמועילה כאשר ברצונך לבצע פעולות על ההודעה השלמה, כגון שמירת כל הודעה בקובץ נפרד. זה הופך את התהליך לפשוט יותר על ידי טעינת כל תוכן ההודעה במהלך כל איטרציה, ומאפשר לך לבצע פעולות רצויות ללא צורך בחיפושים הבאים.

קטע הקוד הבא מדגים את תהליך האיטרציה דרך ההודעות בשיטת enumeratemessages ושליפה של כל תוכן ההודעה.

from aspose.email.storage.mbox import MboxStorageReader, MboxLoadOptions

mbox_load_options = MboxLoadOptions()
mbox_load_options.leave_open = False
mbox_load_options.preferred_text_encoding = 'utf-8'

with MboxStorageReader.create_reader(file_name, mbox_load_options) as mbox_reader:
   for eml in mbox_reader.enumerate_messages():
        eml.save(f"{eml.subject}.eml")

ראוי לציין כי טעינת כל תוכן ההודעה עבור כל איטרציה עלולה להשפיע על הביצועים, במיוחד כאשר עוסקים בקבצים גדולים או במספר ניכר של הודעות. לפיכך, חשוב להעריך את הצרכים הספציפיים שלך ולקחת בחשבון גורמים כמו גודל הקובץ, מספר ההודעות והפעולות שאתה מתכוון לבצע בעת קביעת הגישה המתאימה ביותר למצבך.

קרא הודעות ב-Mbox Files

מניפולציה נוספת שאולי תרצה לבצע עם קובץ mbox היא קריאת הודעות הכלולות בו. אתה יכול לעשות זאת באמצעות מזהה המחרוזת שלהם שנגזר מהגישה הראשונה של ספירת MessageInfo.

בעת שימוש בשיטת enumeratemessageinfo לרשימת הודעות, כל הודעה משויכת למזהה ייחודי בתוך קובץ mbox בודד. מזהה זה, המיוצג בדרך כלל כמחרוזת, ניתן לקבל מהמאפיין entryid של האובייקט MboxMessageInfo.

לאחר שהשגנו את מזהה ההודעה, נוכל להשתמש בו כדי להציג את תוכן ההודעה המלא באמצעות השלבים הבאים:

  • אנו יוצרים מופע של EmlLoadOptions. אובייקט זה יכיל אפשרויות שונות לטעינת קבצי EML.
  • הגדר את המאפיינים:
    • הגדר Preserveembeddedmessageformat ל-True אם ברצונך לשמר את פורמט ההודעה המוטבעת בתוך קובץ ה-EML.
    • הגדר Preservetnefattachments ל-True אם ברצונך לשמר קבצי TNEF בקובץ EML.
  • צור מופע של MboxLoadOptions. אובייקט זה יכיל אפשרויות שונות לטעינת קובץ mbox.
  • הגדר את המאפיינים של mboxloadoptions:
    • הגדר את leaveopen ל-False אם ברצונך לסגור את הקובץ לאחר קריאתו.
    • הגדר את קידוד הטקסט המועדף ל-‘utf-8’ כדי לציין את קידוד הטקסט הרצוי עבור תוכן ההודעה.
  • פתח את הקובץ עם שיטת MboxStorageReader.createreader() .
  • בתוך הלולאה הקדמית, אנו ניגשים למאפיין EntryId של כל אובייקט MboxMessageInfo, המייצג את המזהה הייחודי של ההודעה המתאימה.
  • לאחר מכן אנו משתמשים במזהה זה יחד עם שיטת ExtractMessage של המחלקה MboxStorageReader כדי לאחזר את ההודעה השלמה כאובייקט MailMessage.
  • לבסוף, נוכל לבצע כל פעולה רצויה בהודעה, כמו שמירתה בקובץ .eml נפרד.

קטע הקוד שלהלן מדגים כיצד לקרוא הודעה בודדת באמצעות מזהה המחרוזת שלה:

from aspose.email.storage.mbox import MboxStorageReader, MboxLoadOptions
from aspose.email import EmlLoadOptions

eml_load_options = EmlLoadOptions()
eml_load_options.preserve_embedded_message_format = True
eml_load_options.preserve_tnef_attachments = True

mbox_load_options = MboxLoadOptions()
mbox_load_options.leave_open = False
mbox_load_options.preferred_text_encoding = 'utf-8'

with MboxStorageReader.create_reader(file_name, mbox_load_options) as mbox_reader:
   for message_info in mbox_reader.enumerate_message_info():
        eml = mbox_reader.extract_message(message_info.entry_id, eml_load_options)
        eml.save(f"{eml.subject}.eml")

יתרון משמעותי של גישה זו הוא שהיא מאפשרת לך לקרוא ולעבד באופן סלקטיבי הודעות ספציפיות תוך התעלמות מאחרים. גמישות זו מתגלה למועילה במיוחד כאשר עוסקים בקבצים גדולים המכילים מספר רב של הודעות. על ידי עיבוד סלקטיבי רק של ההודעות הרצויות, חישובים מיותרים ממוזערים, וכתוצאה מכך יעילות כללית משופרת.

חשוב להבין שמזהה ההודעה הוא ייחודי בתוך קובץ בודד. לפיכך, כאשר עובדים עם הודעות על פני מספר קובצי mbox, יש צורך לשמור על מיפוי בין המזהים הללו לבין הקבצים המתאימים להם.

תכונות שירות

ספריית Aspose.Email מציעה מספר תכונות שירות לשיפור העבודה שלך עם קבצי mbox. הבה נבחן כמה מהם:

קבל את ספירת הפריטים הכוללת המאוחסנת ב-mbox

יש דרך פשוטה לקבוע את המספר הכולל של פריטים (הודעות) המאוחסנים בקובץ mbox. השתמש בשיטת gettotalitemscount() כדי לאחזר את הספירה הכוללת של הפריטים (הודעות) הקיימים בקובץ.

הקוד הבא משיג את הספירה הכוללת של הפריטים (הודעות) הקיימים בקובץ.

from aspose.email.storage.mbox import MboxStorageReader, MboxLoadOptions

mbox_load_options = MboxLoadOptions()
mbox_load_options.leave_open = False
mbox_load_options.preferred_text_encoding = 'utf-8'

with MboxStorageReader.create_reader(file_name, mbox_load_options) as mbox_reader:
    items_count = mbox_reader.get_total_items_count()

קבל את גודל הנתונים לקרוא באיטרציה אחת

כדי לקבל את גודל הנתונים הנקראים במהלך איטרציה בודדת, תוכל לגשת למאפיין currentdatasize של אובייקט mboxreader כדי לאחזר את גודל הנתונים (ההודעה) הנקראת באיטרציה הנוכחית.

הקוד הבא חוזר על כל הודעה בקובץ. במהלך כל איטרציה, מתקבל גודל ההודעה הנקראת כעת.

from aspose.email.storage.mbox import MboxStorageReader, MboxLoadOptions

mbox_load_options = MboxLoadOptions()
mbox_load_options.leave_open = False
mbox_load_options.preferred_text_encoding = 'utf-8'

with MboxStorageReader.create_reader(file_name, mbox_load_options) as mbox_reader:
   for message_info in mbox_reader.enumerate_message_info():
        message_size = mbox_reader.current_data_size

סיכום

במאמר זה בדקנו את ה-mbox - פורמט סטנדרטי ומקובל לאחסון הודעות דואר אלקטרוני. הפשטות והתאימות שלו בין לקוחות ומערכות דוא"ל שונות הופכות אותו לבחירה פופולרית לארכיון והעברת נתוני דוא"ל. הפורמט כולל הווריאציות שלו נתמך על ידי ספריית Aspose.Email for Python החזקה שלנו המאפשרת קריאה קלה, חילוץ ומניפולציה של נתוני דוא"ל. קטעי הקוד הפשוטים ושלבי הקוד שלנו הציגו הנחיות מקיפות ומפורטות כיצד לפתוח, לרשום ולהציג הודעות בקובצי mbox.

אתה יכול לחקור תכונות אחרות של Aspose.Email באמצעות תיעוד. כמו כן, אתה יכול לפרסם את השאילתות שלך בהפורום שלנו.

ראה גם