Как я могу изменить порядок файлов mbox в хронологическом порядке?

StackOverflow https://stackoverflow.com/questions/368003

  •  21-08-2019
  •  | 
  •  

Вопрос

У меня есть один файл spool mbox, созданный с помощью evolution, содержащий подборку электронных писем, которые я хочу распечатать.Моя проблема в том, что электронные письма не помещаются в файл 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 или чего-то подобного.

Это было полезно?

Решение

Вот как вы могли бы сделать это на 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()

Другие советы

Решение Python не будет работать, если почтовые сообщения были импортированы в mbox с помощью дополнения Thunderbird ImportExportTools.Есть ошибка:сообщения должны иметь префикс в виде строки "from" в формате:

From - Tue Apr 27 19:42:22 2010

но ImportExportTools имеет префикс с такой строкой "from":

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

Итак, есть две ошибки:

  1. последовательность "время года" разбита на "время года"
  2. дополнительная корзина с GMT информация вместе с названием часового пояса

Поскольку в Python mailbox.py/UnixMailbox есть жестко запрограммированное регулярное выражение для сопоставления строк 'from', некоторые сообщения не могут быть проанализированы.

Я написал сообщение об ошибке автору, но есть много ошибочно импортированных сообщений :(.

Какой смысл переписывать mbox, в то время как вы можете изменить порядок писем в памяти при загрузке почтового ящика?В какое время вы хотите сделать заказ?Дата получения?Дата отправки?Во всяком случае, все модули Ruby / Python / Perl для работы с mboxes могут это делать.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top