Pregunta

Tengo un archivo de cola de mbox única que se creó con la evolución, que contiene una selección de mensajes de correo electrónico que desea imprimir. Mi problema es que los correos electrónicos no se colocan en el archivo mbox cronológicamente. Me gustaría saber la mejor manera de poner orden los archivos de principio a fin usando bash, Perl o Python. Me gustaría oder por recibido para los archivos que me ha dirigido, y se envía para los archivos enviados por mí. ¿Sería tal vez más fácil de usar archivos maildir o tal?

Los mensajes de correo electrónico actualmente existen en el 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

Me pregunto si hay una manera de utilizar esta información para reorganizar fácilmente el archivo, tal vez con Perl o tales.

¿Fue útil?

Solución

Esta es la forma en que podría hacerlo 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()

Otros consejos

Python solución no funcionará si los mensajes de correo electrónico se ha importado a mbox usando ImportExportTools complemento de Thunderbird. Hay un error: los mensajes se prefijar con 'de' línea en formato:

From - Tue Apr 27 19:42:22 2010

pero ImportExportTools prefijo de con tal línea 'de':

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

Así que hay dos errores:

  1. 'año a tiempo' secuencia divide en 'Vez el año'
  2. basura adicional con GMT información junto con el nombre de zona horaria

Desde mailbox.py/UnixMailbox de Python ha hardcoded expresión regular para 'de' coincidencia de líneas, algunos de los mensajes no pueden analizada.

escribí el mensaje de error al autor, pero hay muchos mensajes de error importados: (

.

¿Cuál es el punto de reescribir el mbox mientras que usted puede cambiar el orden de los mensajes en la memoria al cargar el buzón de correo? El cual es el que usted quiere pedir el? Recibe la fecha? ¿Fecha enviada? De todos modos, todos los módulos de Ruby / Python / Perl para jugar con mboxes pueden hacer eso.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top