سؤال

لدي واحد التخزين المؤقت ملف mbox التي تم إنشاؤها مع تطور, تحتوي على مجموعة مختارة من رسائل البريد الإلكتروني التي لا ترغب في الطباعة.مشكلتي هي أن رسائل البريد الإلكتروني التي يتم وضعها في ملف mbox زمنيا.أود أن أعرف أفضل طريقة لوضع النظام الملفات من أول إلى آخر باستخدام باش, perl أو python.أود أن أودر من تلقى عن الملفات التي وجهها إلي ، و إرسال الملفات المرسلة من قبل لي.فإنه ربما يكون من الأسهل استخدام دليل بريد الملفات أو مثل هذا ؟

رسائل البريد الإلكتروني الموجودة حاليا في الشكل:

From x@blah.com Fri Aug 12 09:34:09 2005
Message-ID: <42FBEE81.9090701@blah.com>
Date: Fri, 12 Aug 2005 09:34:09 +0900
From: me <x@blah.com>
User-Agent: Mozilla Thunderbird 1.0.6 (Windows/20050716)
X-Accept-Language: en-us, en
MIME-Version: 1.0
To: someone <someone@hotmail.com>
Subject: Re: (no subject)
References: <BAY101-F9353854000A4758A7E2CCA9BD0@phx.gbl>
In-Reply-To: <BAY101-F9353854000A4758A7E2CCA9BD0@phx.gbl>
Content-Type: text/plain; charset=ISO-8859-1; format=flowed
Content-Transfer-Encoding: 8bit
Status: RO
X-Status: 
X-Keywords:                 
X-UID: 371
X-Evolution-Source: imap://x+blah.com@blah.com/
X-Evolution: 00000002-0010

Hey

the actual content of the email

someone wrote:

> lines of quotedtext

وأنا أتساءل عما إذا كان هناك طريقة لاستخدام هذه المعلومات بسهولة تنظيم الملف ، وربما مع perl أو تلك.

هل كانت مفيدة؟

المحلول

وهذه هي الطريقة التي يمكن أن تفعل ذلك في بيثون:

#!/usr/bin/python2.5
from email.utils import parsedate
import mailbox

def extract_date(email):
    date = email.get('Date')
    return parsedate(date)

the_mailbox = mailbox.mbox('/path/to/mbox')
sorted_mails = sorted(the_mailbox, key=extract_date)
the_mailbox.update(enumerate(sorted_mails))
the_mailbox.flush()

نصائح أخرى

بيثون الحل لن تعمل إذا كانت رسائل البريد تم استيرادها إلى mbox باستخدام ثندربيرد هو ImportExportTools الملحق.وهناك علة:الرسائل يجب البادئة مع " من " خط في الشكل:

From - Tue Apr 27 19:42:22 2010

ولكن ImportExportTools البادئة مع هذه 'من' خط:

From - Sat May 01 2010 15:07:31 GMT+0400 (Russian Daylight Time)

لذلك هناك نوعان من الأخطاء:

  1. تسلسل 'الوقت من العام كسر في 'سنوات'
  2. إضافية القمامة مع GMT معلومات عن الفندق جنبا إلى جنب مع اسم المنطقة الزمنية

منذ بايثون علبة البريد.py/UnixMailbox وقد ضمنية regexp على " من " خط مطابقة بعض الرسائل لا يمكن تحليل.

كتبت رسالة الخطأ إلى المؤلف ، ولكن هناك العديد من خطأ الرسائل المستوردة :(.

ما هي الفائدة في إعادة كتابة MBOX في حين يمكنك إعادة ترتيب الرسائل في الذاكرة عند تحميل ما يصل صندوق البريد؟ وهو الوقت الذي هو واحد كنت تريد أن تأمر على؟ تاريخ الإستلام؟ تاريخ إرسالها؟ على أي حال، فإن جميع وحدات روبي / بيثون / بيرل للعب مع ملفات mbox يمكن أن نفعل ذلك.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top