5

印刷したい電子メールの選択を含む、evolutionで作成された単一のスプールmboxファイルがあります。私の問題は、メールが時系列でmboxファイルに配置されないことです。bash、perl、またはpythonを使用して、ファイルを最初から最後まで並べ替える最良の方法を知りたいです。自分宛のファイルを受信し、自分が送信したファイルを送信します。maildirファイルなどを使用する方が簡単でしょうか?

電子メールは現在、次の形式で存在します。

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などを使用してファイルを簡単に再編成する方法があるかどうか疑問に思っています。

4

3 に答える 3

13

これは、Pythonでそれを行う方法です:

#!/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()
于 2008-12-15T11:27:26.260 に答える
1

Thunderbird の ImportExportTools アドオンを使用してメール メッセージが mbox にインポートされた場合、Python ソリューションは機能しません。バグがあります: メッセージは次の形式で「from」行を前に付けなければなりません:

From - Tue Apr 27 19:42:22 2010

ただし、そのような「from」行を持つ ImportExportTools プレフィックス:

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

したがって、次の 2 つのエラーがあります。

  1. シーケンス 'time year' を 'year time' に分割
  2. GMT 情報とタイムゾーン名を含む余分なゴミ

Python の mailbox.py/UnixMailbox には「from」行の一致用にハードコーディングされた正規表現があるため、一部のメッセージは解析できません。

エラーメッセージを作者に書きましたが、間違ってインポートされたメッセージがたくさんあります:(。

于 2010-05-01T11:35:32.217 に答える
-3

メールボックスをロードするときにメモリ内のメールを並べ替えることができるのに、mbox を書き換える意味は何ですか? 何時に注文しますか?受け取り日?送信日?とにかく、mbox で遊ぶためのすべての Ruby/Python/Perl モジュールはそれを行うことができます。

于 2008-12-15T10:57:36.443 に答える