Question

J'ai un seul fichier mbox de bobine qui a été créé avec l'évolution, contenant une sélection de courriels que je souhaite imprimer. Mon problème est que les e-mails ne sont pas placés dans le fichier mbox par ordre chronologique. Je voudrais savoir la meilleure façon de passer commande les fichiers du premier au dernier en utilisant bash, perl ou python. Je voudrais oder par reçu pour les fichiers adressés à moi, et envoyé des fichiers envoyés par moi. Ne serait-il peut-être plus facile d'utiliser des fichiers maildir ou tel?

Les e-mails existent actuellement dans le format suivant:

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

Je me demande s'il y a un moyen d'utiliser ces informations pour réorganiser facilement le fichier, peut-être avec perl ou tel.

Était-ce utile?

La solution

Voici comment vous pouvez le faire en 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()

Autres conseils

solution Python ne fonctionnera pas si les messages électroniques ont été importés dans Mbox en utilisant le addon ImportExportTools de Thunderbird. Il y a un bug: les messages sont préfixe avec « de » ligne au format:

From - Tue Apr 27 19:42:22 2010

mais préfixent ImportExportTools avec une telle ligne 'de':

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

Donc, il y a deux erreurs:

  1. séquence 'année temps cassé en 'Temps de l'année'
  2. poubelle supplémentaire avec GMT information avec le nom de fuseau horaire

Depuis mailbox.py/UnixMailbox Python a hardcoded pour la correspondance regexp ligne 'de', certains messages ne peuvent pas analysable.

J'ai écrit le message d'erreur à l'auteur, mais il y a beaucoup de messages importés par erreur: (

.

Quel est le point de réécriture de la Mbox alors que vous pouvez réorganiser les mails en mémoire lors du chargement jusqu'à la boîte aux lettres? Quelle heure est celui que vous voulez commander sur? Date de réception? Date envoyée? Quoi qu'il en soit, tous les modules Ruby / Python / Perl pour jouer avec fichiers mbox peut le faire.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top