Mbox Depolama Dosyaları

Bu makalenin birincil amacı, mbox biçimini araştırmanıza yardımcı olmak ve size mbox dosyalarını okuma sürecinde yardımcı olabilecek kod parçaları sunmaktır. Mbox dosyalarının nasıl ayrıştırılacağı ve içerdikleri mesajlara nasıl erişileceği, görüntüleneceği ve saklanacağı hakkında bilgi edineceksiniz.

Mbox Biçimi Hakkında

mbox formatı, uzun geçmişi ve e-posta mesajlarını depolamak için standartlaştırılmış bir format olarak geniş çapta kabul görmesi nedeniyle önem taşımaktadır. Birden çok e-posta iletisinin birleştirilmesine ve tek bir dosyada saklanmasına izin veren düz metin dosyası biçimidir. Bu biçimin basitliği ve çeşitli e-posta istemcileri ve sistemleri arasındaki uyumluluğu, onu e-posta verilerinin arşivlenmesi ve aktarılması için popüler bir seçim haline getirir. Ek olarak, mbox formatı gönderen, alıcı, konu ve zaman damgası gibi temel meta verileri koruyarak mesajların bütünlüğünün korunmasını sağlar.

Bu biçimle uyumlu en popüler e-posta istemcileri şunlardır:

  • Thunderbird - e-posta mesajlarını depolamak için mbox biçimini kullanan, yaygın olarak kullanılan açık kaynaklı bir e-posta istemcisi. Bir klasördeki tüm mesajları “.mbox” uzantılı tek bir dosyada saklar. Kullanıcının rahatlığı ve kolay yönetimi için, posta kutusu içindeki her klasör için ayrı dosyalar oluşturulur. Kullanıcıların mbox dosyalarını sorunsuz bir şekilde içe ve dışa aktarmalarına izin vererek e-posta verilerinin Thunderbird ile diğer mbox uyumlu uygulamalar arasında zahmetsizce taşınmasını sağlar.

  • Apple Mail - mbox biçimi için yerleşik destek sunan, macOS ve iOS aygıtlarındaki varsayılan e-posta istemcisi. Her bir posta kutusu klasörünü ayrı bir dosya olarak depolayarak, kullanıcıların Apple Mail içindeki mbox dosyalarına kolayca erişmesine, bu dosyaları içe aktarmasına veya aktarmasına olanak tanır. Apple Mail dosyaları genellikle “.mbox” veya “.mbox.plist” uzantılarıyla depolanır.

  • Evolution - Linux için zengin özelliklere sahip bir e-posta ve kişisel bilgi yönetimi uygulaması, aynı zamanda mbox biçimini de destekler. Kullanıcıların e-posta verilerinin Evolution’ın kapsamlı platformuna sorunsuz entegrasyonunu sağlayarak mbox dosyalarını içe aktarmasına olanak tanır.

Bunlar, mbox formatını kullanan birkaç e-posta istemcisi örneğidir. E-posta verilerinin uyumluluğunu ve doğru şekilde ayrıştırılmasını sağlamaya yardımcı olduğundan, bu tür dosyalarla programlı olarak çalışırken biçimi ve farklı e-posta istemcilerindeki kullanımını anlamak çok önemlidir.

Biçimin, her biri kendi uygulama ayrıntılarına sahip farklı varyasyonları vardır. Yaygın olarak karşılaşılan mbox biçimlerinden bazıları arasında “mboxrd”, “mboxo”, “mboxcl”, “mboxcl2” bulunur. Bu varyasyonlar, temel olarak, mesaj sınırlayıcılar ve meta veriler gibi belirli yönleri ele alma biçimleri bakımından farklılık gösterir. E-posta verilerinin uyumluluğunu ve ayrıştırılmasını etkileyebileceklerinden, mbox dosyalarıyla çalışırken bu farklılıkların farkında olmak önemlidir.

Mbox Dosyalarını Okumak için Python API

Aspose.Email for Python kitaplığımızla Python’da mbox dosyalarıyla çalışmak kolaydır. E-posta işleme için mbox dosyalarını okuma, mesajları ayıklama ve e-posta verilerini değiştirme gibi kapsamlı bir dizi özellik sunan bu sağlam ve zengin özelliklere sahip API.

Aspose.Email for Python’un daha önce belirtilenler de dahil olmak üzere çeşitli mbox formatları için kapsamlı destek sunduğunu belirtmek önemlidir. Bu, mbox biçiminin belirli uygulama ayrıntılarından bağımsız olarak, farklı e-posta istemcilerinden gelen bu dosyalarla sorunsuz bir şekilde çalışabileceğiniz anlamına gelir. API’nin gücünden yararlanmak için, aşağıdaki komutu kullanarak DLL dosyasını indirmek veya PyPI‘den yüklemek mümkündür:

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

Mbox Dosyasını Aç

mbox formatında bir dosya ile çalışmaya başlamak için önce onu açmalıyız. Aspose.Email library bu konuda bize yardımcı olacaktır.

Kodumuzda, aşağıda açıklanan adımları izleyeceğiz:

  • Kod, Aspose.Email kitaplığından gerekli modüllerin içe aktarılmasıyla başlar: MboxStorageReader ve MboxLoadOptions sınıfları.

  • Ardından, dosyayı yüklemek için istenen seçenekleri belirtmek üzere bir MboxLoadOptions örneği oluşturuyoruz.

  • Ardından, dosyanın okunduktan sonra kapatılması gerektiğini belirtmek için açık bırak seçeneğini False olarak ayarlıyoruz ve tercih edilen metin kodlaması olarak UTF8’i belirtiyoruz.

  • Son olarak, createreader statik yöntemini çağırarak, kaynak dosya adını ve MboxLoadOptions örneğini geçirerek MboxStorageReader sınıfının bir örneğini oluşturuyoruz.

Aşağıdaki kod parçacığı, bir mbox dosyasının nasıl açılacağını gösterir:

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 Dosyasından Mesajları Listeleme

Dosya açıldığından, içinde saklanan mesajları keşfedebiliriz. Aşağıdaki kod parçacıkları, bir mbox dosyasındaki mesajları listelemeye yönelik iki yaklaşımı temsil eder.

Yaklaşım 1: EnumerateMessageInfo yöntemi

Bir mbox dosyasındaki mesajları listelemeye yönelik ilk yaklaşım, MboxStorageReader sınıfının enumeratemessageinfo yöntemini kullanmaktır. Mesajları yineler ve konu, başlangıç, bitiş ve tarih gibi temel mesaj bilgilerini görüntüler. Ayrıca, daha sonra tam mesaj içeriğini okumak için kullanılan bir mesaj tanımlayıcısı (giriş kimliği) döndürür. Bu yaklaşım aşağıdaki özelliklere sahiptir:

  • Performans: Yineleme sırasında mesaj gövdesini ayrıştırmaktan ve yüklemekten kaçınarak temel mesaj bilgilerini okumaya ve görüntülemeye odaklanması nedeniyle başka bir yaklaşıma kıyasla daha hızlıdır.

  • Verimlilik: Yalnızca temel bilgileri hedefleyerek bellek tüketimini ve işlem süresini en aza indirir. Çok sayıda mesaj içeren büyük dosyalarla uğraşılması gerektiğinde özellikle takdir edilmektedir.

Bir mbox dosyasındaki mesajları okumak, listelemek ve görüntülemek için aşağıdaki adımları izleyeceğiz:

  • Aspose.Email kitaplığından gerekli modülleri içe aktarın: MboxStorageReader ve MboxLoadOptions sınıfları.

  • MboxLoadOptions sınıfının bir örneğini oluşturun. Bu nesne, dosyayı yüklemek için çeşitli seçenekleri barındıracaktır.

  • Nesnenin özelliklerini yapılandırın:

    • Dosyayı okuduktan sonra kapatmak istiyorsanız, açık bırak seçeneğini Yanlış olarak ayarlayın.
    • Mesaj içeriği için istenen metin kodlamasını belirtmek için tercih edilen metin kodlamasını ‘utf-8’ olarak ayarlayın.
  • Dosyayı MboxStorageReader sınıfının MboxStorageReader.createreader() yöntemiyle açın.

  • Her mesajdan belirli ayrıntıları çıkaran mboxreader nesnesinin enumeratemessageinfo() yöntemini kullanarak dosyadaki her mesajı yineleyin. Örneğimizde bunlar konu, adres, bitiş ve tarihtir.

Aşağıdaki kod parçacığı, enumeratemessageinfo yöntemini ve bunların bilgi alımını kullanan iletiler aracılığıyla yineleme sürecini gösterir.

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)

Bu şekilde Konu, Kimden, Kime ve Tarih gibi özelliklere erişebilir ve ilgili ayrıntıları görüntüleyebiliriz.

Yaklaşım 2: EnumerateMessages yöntemi

İlk yaklaşımdan farklı olarak, ikincisi mbox dosyasında bulunan MailMessage örneklerini enumeratemessages yöntemini kullanarak doğrudan yinelemeyi amaçlar. Bu yöntem, her yineleme sırasında tüm mesaj içeriğini okur ve yükler, böylece eksiksiz e-posta bilgilerine anında erişim sağlar. İşte bu yaklaşımın bazı önemli yönleri:

  • Tamlık: Gövde, ekler, başlıklar ve diğer bölümler dahil olmak üzere tüm mesaj içeriğine erişilmesine ve işlenmesine olanak tanır.

  • Kolaylık: Bu yaklaşım, her iletiyi ayrı bir dosyaya kaydetmek gibi tam ileti üzerinde işlemler gerçekleştirmek istediğinizde yararlı olur. Her yinelemede tüm mesaj içeriğini yükleyerek süreci basitleştirir ve sonraki aramalara ihtiyaç duymadan istediğiniz işlemleri gerçekleştirmenize olanak tanır.

Aşağıdaki kod parçacığı, enumeratemessages yöntemini kullanarak iletiler boyunca yineleme sürecini ve tüm ileti içeriğinin alınmasını gösterir.

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

Her yineleme için tüm mesaj içeriğinin yüklenmesinin, özellikle oldukça büyük dosyalarla veya çok sayıda mesajla uğraşırken potansiyel olarak performansı etkileyebileceğini belirtmekte fayda var. Bu nedenle, özel ihtiyaçlarınızı değerlendirmek ve durumunuza en uygun yaklaşımı belirlerken dosyanın boyutu, mesaj sayısı ve gerçekleştirmeyi düşündüğünüz işlemler gibi faktörleri dikkate almak önemlidir.

Mbox Dosyalarındaki Mesajları Oku

Bir mbox dosyasıyla gerçekleştirmek isteyebileceğiniz başka bir işlem, içinde bulunan mesajları okumaktır. Bunu, MessageInfo’yu numaralandırmanın ilk yaklaşımından türetilen dize tanımlayıcılarını kullanarak yapabilirsiniz.

İletileri listelemek için enumeratemessageinfo yöntemini kullanırken, her ileti tek bir mbox dosyası içinde benzersiz bir tanımlayıcıyla ilişkilendirilir. Tipik olarak bir dize olarak temsil edilen bu tanımlayıcı, MboxMessageInfo nesnesinin entryid özelliğinden elde edilebilir.

Mesaj tanımlayıcısını elde ettikten sonra, aşağıdaki adımlarla tam mesaj içeriğini görüntülemek için kullanabiliriz:

  • Bir EmlLoadOptions örneği oluşturuyoruz. Bu nesne, EML dosyalarını yüklemek için çeşitli seçenekleri barındıracaktır.
  • Özellikleri yapılandırın:
    • EML dosyası içindeki katıştırılmış ileti biçimini korumak istiyorsanız, saveembeddedmessageformat öğesini True olarak ayarlayın.
    • EML dosyasındaki TNEF eklerini korumak istiyorsanız, koruma eklerini True olarak ayarlayın.
  • Bir MboxLoadOptions örneği oluşturun. Bu nesne, mbox dosyasını yüklemek için çeşitli seçenekleri barındıracaktır.
  • mboxloadoptions özelliklerini yapılandırın:
    • Dosyayı okuduktan sonra kapatmak istiyorsanız, açık bırak seçeneğini Yanlış olarak ayarlayın.
    • Mesaj içeriği için istenen metin kodlamasını belirtmek için tercih edilen metin kodlamasını ‘utf-8’ olarak ayarlayın.
  • Dosyayı MboxStorageReader.createreader() yöntemiyle açın.
  • foreach döngüsünün içinde, her MboxMessageInfo nesnesinin ilgili mesajın benzersiz tanımlayıcısını temsil eden EntryId özelliğine erişiriz.
  • Daha sonra mesajın tamamını bir MailMessage nesnesi olarak almak için MboxStorageReader sınıfının ExtractMessage yöntemiyle birlikte bu tanımlayıcıyı kullanırız.
  • Son olarak, mesaj üzerinde, ayrı bir .eml dosyasına kaydetmek gibi istediğimiz işlemleri yapabiliriz.

Aşağıdaki kod parçacığı, dize tanımlayıcısını kullanarak tek bir iletinin nasıl okunacağını gösterir:

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

Bu yaklaşımın önemli bir avantajı, diğerlerini dikkate almadan belirli mesajları seçerek okumanıza ve işlemenize olanak sağlamasıdır. Bu esneklik, özellikle çok sayıda mesaj içeren büyük dosyalarla uğraşırken faydalıdır. Yalnızca istenen mesajları seçerek işleyerek, gereksiz hesaplamalar en aza indirilir ve bu da genel verimliliğin artmasına neden olur.

Mesaj tanımlayıcısının tek bir dosya içinde benzersiz olduğunu anlamak çok önemlidir. Bu nedenle, birden fazla mbox dosyasındaki mesajlarla çalışırken, bu tanımlayıcılar ve bunlara karşılık gelen dosyalar arasında bir eşlemenin sürdürülmesi gerekli hale gelir.

Yardımcı Özellikler

Aspose.Email kitaplığı, mbox dosyalarıyla çalışmanızı geliştirmek için çeşitli yardımcı özellikler sunar. Bunlardan birkaçını ele alalım:

Mbox’ta saklanan toplam öğe sayısını alın

Bir mbox dosyasında saklanan öğelerin (mesajların) toplam sayısını belirlemenin basit bir yolu vardır. Dosyada bulunan öğelerin (mesajların) toplam sayısını almak için gettotalitemscount() yöntemini kullanın.

Aşağıdaki kod, dosyada bulunan öğelerin (mesajların) toplam sayısını elde eder.

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

Veri boyutunu tek yinelemede okuyun

Tek bir yineleme sırasında okunan verilerin boyutunu elde etmek için, geçerli yinelemede okunan verilerin (mesajın) boyutunu almak için mboxreader nesnesinin currentdatasize özelliğine erişebilirsiniz.

Aşağıdaki kod, dosyadaki her iletide yinelenir. Her yineleme sırasında, okunmakta olan mesajın boyutu elde edilir.

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

Çözüm

Bu makalede, e-posta mesajlarını depolamak için standartlaştırılmış ve yaygın olarak kabul edilen bir biçim olan mbox’ı inceledik. Basitliği ve çeşitli e-posta istemcileri ve sistemleri arasındaki uyumluluğu, onu e-posta verilerini arşivlemek ve aktarmak için popüler bir seçim haline getirir. Varyasyonları da dahil olmak üzere biçim, e-posta verilerinin kolay okunmasına, çıkarılmasına ve değiştirilmesine olanak tanıyan güçlü Aspose.Email for Python kitaplığımız tarafından desteklenir. Basit kod parçacıklarımız ve kod adımlarımız, mbox dosyalarındaki mesajların nasıl açılacağı, listeleneceği ve görüntüleneceği hakkında kapsamlı ve ayrıntılı talimatlar sunuyordu.

Belgeleri kullanarak Aspose.Email’in diğer özelliklerini keşfedebilirsiniz. Ayrıca, sorgularınızı forumumuza gönderebilirsiniz.

Ayrıca bakınız