Domanda

Ho un singolo file di spool mbox che è stato creato con l'evoluzione, contenente una selezione di e-mail che ho da stampare. Il mio problema è che i messaggi di posta elettronica non siano immessi nel file mbox in ordine cronologico. Vorrei conoscere il modo migliore per ordinare i file dal primo all'ultimo usando bash, Perl o Python. Vorrei Oder dal ricevuto per i file che mi ha rivolto, e inviato per i file inviati da me. Sarebbe forse più facile da usare file Maildir o tali?

I messaggi di posta elettronica attualmente esistono nel formato:

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

Mi chiedo se c'è un modo per utilizzare queste informazioni per riorganizzare facilmente il file, magari con perl o tali.

È stato utile?

Soluzione

Questo è come si potrebbe farlo in 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()

Altri suggerimenti

soluzione Python non funzionerà se i messaggi di posta elettronica è stato importato in mbox usando Thunderbird ImportExportTools addon. Ci sono un bug: i messaggi devono prefisso con 'dalla' linea in formato:

From - Tue Apr 27 19:42:22 2010

ma ImportExportTools Prefisso tale linea 'da':

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

Quindi ci sono due errori:

  1. 'anno di tempo' suddiviso in sequenza 'Il momento dell'anno'
  2. spazzatura in più con GMT informazioni insieme al nome del fuso orario

Dal mailbox.py/UnixMailbox di Python ha hardcoded regexp per 'da' la linea di corrispondenza, alcuni dei messaggi non può analizzato.

ho scritto il messaggio di errore per l'autore, ma ci sono molti messaggi erroneamente importati: (

.

Qual è il punto di riscrivere il Mbox, mentre è possibile riordinare le mail in memoria durante il caricamento la cassetta postale? Che il tempo è quello che si desidera ordinare on? Data di Ricezione? data di invio? In ogni caso, tutti i moduli di Ruby / Python / Perl per giocare con mbox possono farlo.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top