Pergunta

Eu tenho um único arquivo de spool mbox que foi criado com a evolução, contendo uma seleção de e-mails que eu deseja imprimir. Meu problema é que os e-mails não são colocados no arquivo mbox cronologicamente. Eu gostaria de saber a melhor maneira de colocar ordem os arquivos do primeiro ao último usando bash, perl ou python. Gostaria de oder pelo recebidas para arquivos dirigida a mim, e enviado para os arquivos enviados por mim. Será que talvez seja mais fácil usar maildir arquivos ou tal?

Os e-mails existir atualmente no 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

Eu estou querendo saber se existe uma maneira de usar esta informação para facilmente reorganizar o arquivo, talvez com perl ou algo semelhante.

Foi útil?

Solução

Isto é como você poderia fazer isso em 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()

Outras dicas

Python solução não vai funcionar se as mensagens de correio foi importado para mbox usando ImportExportTools complemento do Thunderbird. Há um erro: mensagens deve prefixo 'de' linha no formato:

From - Tue Apr 27 19:42:22 2010

mas ImportExportTools prefixar com tal 'de' linha:

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

Portanto, há dois erros:

  1. seqüência de 'ano de tempo' quebrado em 'Período do ano'
  2. lixo extra com GMT informações juntamente com o nome de fuso horário

Desde mailbox.py/UnixMailbox do Python tem codificado regexp para 'de' correspondência de linhas, algumas mensagens podem não analisado.

Eu escrevi a mensagem de erro para o autor, mas há muitas mensagens erroneamente importados: (

.

Qual é o ponto em reescrever a mbox ao passo que você pode reordenar os e-mails na memória ao carregar a caixa de correio? Que o tempo é o que você quer de pedido no? Data de Recebimento? data de envio? De qualquer forma, todos os módulos Ruby / Python / Perl para brincar com as caixas de correio podem fazer isso.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top