- เกี่ยวกับรูปแบบ Mbox
- Python API เพื่ออ่านไฟล์ Mbox
- เปิดไฟล์ Mbox
- แสดงรายการข้อความจากไฟล์ Mbox
- อ่านข้อความในไฟล์ Mbox
- คุณสมบัติยูทิลิตี้
จุดประสงค์หลักของบทความนี้คือการช่วยคุณเจาะลึกรูปแบบ mbox และนำเสนอโค้ดบางส่วนที่สามารถช่วยในกระบวนการอ่านไฟล์ mbox คุณจะได้รับความรู้เกี่ยวกับวิธีแยกวิเคราะห์ไฟล์ mbox ตลอดจนวิธีเข้าถึง ดู และจัดเก็บข้อความที่อยู่ในไฟล์
เกี่ยวกับรูปแบบ Mbox
รูปแบบ mbox มีความสำคัญเนื่องจากมีประวัติอันยาวนานและการยอมรับอย่างกว้างขวางว่าเป็นรูปแบบมาตรฐานสำหรับจัดเก็บข้อความอีเมล เป็นรูปแบบไฟล์ข้อความล้วนที่อนุญาตให้เชื่อมข้อความอีเมลหลายข้อความเข้าด้วยกันและจัดเก็บไว้ในไฟล์เดียว ความเรียบง่ายและความเข้ากันได้ของรูปแบบนี้ในไคลเอนต์และระบบอีเมลต่างๆ ทำให้รูปแบบนี้เป็นตัวเลือกยอดนิยมสำหรับการเก็บถาวรและถ่ายโอนข้อมูลอีเมล นอกจากนี้ รูปแบบ mbox ยังเก็บข้อมูลเมตาที่จำเป็น เช่น ผู้ส่ง ผู้รับ หัวเรื่อง และการประทับเวลา เพื่อให้แน่ใจว่าข้อความจะได้รับการเก็บรักษาไว้อย่างสมบูรณ์
ไคลเอนต์อีเมลยอดนิยมที่เข้ากันได้กับรูปแบบนี้คือ:
ธันเดอร์เบิร์ด - ไคลเอนต์อีเมลโอเพ่นซอร์สที่ใช้กันอย่างแพร่หลายซึ่งใช้รูปแบบ mbox เพื่อจัดเก็บข้อความอีเมล มันเก็บข้อความทั้งหมดของโฟลเดอร์ไว้ในไฟล์เดียวที่มีนามสกุล “.mbox” เพื่อความสะดวกของผู้ใช้และการจัดการที่ง่าย ไฟล์แยกต่างหากจะถูกสร้างขึ้นสำหรับแต่ละโฟลเดอร์ภายในเมลบ็อกซ์ ช่วยให้ผู้ใช้สามารถนำเข้าและส่งออกไฟล์ mbox ได้อย่างราบรื่น ทำให้ง่ายต่อการย้ายข้อมูลอีเมลระหว่าง Thunderbird และแอปพลิเคชันอื่น ๆ ที่รองรับ mbox
Apple Mail - ไคลเอนต์อีเมลเริ่มต้นในอุปกรณ์ macOS และ iOS ที่ให้การสนับสนุนในตัวสำหรับรูปแบบ mbox ช่วยให้ผู้ใช้เข้าถึง นำเข้า หรือถ่ายโอนไฟล์ mbox ภายใน Apple Mail ได้อย่างง่ายดาย โดยจัดเก็บโฟลเดอร์กล่องจดหมายแต่ละโฟลเดอร์เป็นไฟล์แยกต่างหาก ไฟล์ Apple Mail มักจะจัดเก็บด้วยนามสกุล “.mbox” หรือ “.mbox.plist”
Evolution - แอปพลิเคชันการจัดการอีเมลและข้อมูลส่วนบุคคลที่มีคุณลักษณะหลากหลายสำหรับ Linux ยังรองรับรูปแบบ 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
การจัดการอื่นที่คุณอาจต้องการดำเนินการกับไฟล์ mbox คือการอ่านข้อความที่อยู่ในนั้น คุณสามารถทำได้โดยใช้ตัวระบุสตริงที่ได้มาจากวิธีแรกในการระบุ MessageInfo
เมื่อใช้เมธอด enumeratemessageinfo เพื่อแสดงรายการข้อความ แต่ละข้อความจะเชื่อมโยงกับตัวระบุที่ไม่ซ้ำกันภายในไฟล์ mbox ไฟล์เดียว ตัวระบุนี้ ซึ่งโดยทั่วไปจะแสดงเป็นสตริง สามารถรับได้จากคุณสมบัติ entryid ของอ็อบเจ็กต์ MboxMessageInfo
เมื่อเราได้รับตัวระบุข้อความแล้ว เราสามารถใช้เพื่อดูเนื้อหาข้อความทั้งหมดตามขั้นตอนต่อไปนี้:
- เราสร้างอินสแตนซ์ของ EmlLoadOptions วัตถุนี้จะมีตัวเลือกต่างๆ สำหรับการโหลดไฟล์ EML
- กำหนดค่าคุณสมบัติ:
- ตั้งค่ารูปแบบข้อความที่ฝังไว้เป็น True หากคุณต้องการรักษารูปแบบข้อความที่ฝังไว้ภายในไฟล์ EML
- ตั้งค่าการรักษาไฟล์แนบเป็น True หากคุณต้องการรักษาไฟล์แนบ TNEF ภายในไฟล์ EML
- สร้างอินสแตนซ์ของ MboxLoadOptions วัตถุนี้จะมีตัวเลือกต่างๆ สำหรับการโหลดไฟล์ mbox
- กำหนดค่าคุณสมบัติของ mboxloadoptions:
- ตั้งค่า Leaveopen เป็น False หากคุณต้องการปิดไฟล์หลังจากอ่าน
- ตั้งค่าการเข้ารหัสข้อความที่ต้องการเป็น ‘utf-8’ เพื่อระบุการเข้ารหัสข้อความที่ต้องการสำหรับเนื้อหาข้อความ
- เปิดไฟล์ด้วยวิธี MboxStorageReader.createreader()
- ภายใน foreach loop เราเข้าถึงคุณสมบัติ 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()
รับขนาดข้อมูลที่อ่านได้ในหนึ่งรอบ
ในการรับขนาดของข้อมูลที่อ่านระหว่างการวนซ้ำครั้งเดียว คุณสามารถเข้าถึงคุณสมบัติขนาดข้อมูลปัจจุบันของออบเจ็กต์ 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 โดยใช้ เอกสารประกอบ นอกจากนี้ คุณสามารถโพสต์คำถามของคุณไปที่ ฟอรัมของเรา