gpt4 book ai didi

perl - 如何使用 bash 或 Perl 重新格式化 mbox 文件中的消息?

转载 作者:行者123 更新时间:2023-12-01 06:23:40 25 4
gpt4 key购买 nike

我有一个巨大的 mbox 文件,里面可能有 500 封电子邮件。

看起来像下面这样:

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

我想知道如何删除所有引用的文本,去除除“收件人”、“发件人”和“日期”行之外的大部分标题,并使其保持连续。

我的目标是能够将这些电子邮件打印成一本书的格式,目前每个程序都希望每页打印一封电子邮件,或者所有标题和引用的文本。关于从哪里开始使用 shell 工具编写小程序有什么建议吗?

最佳答案

Mail::Box::Mbox将使您轻松地将文件解析为单独的消息。马克 Overmeer 的 slides from YAPC::Europe 2002详细介绍为什么解析比看起来要困难得多。使用此库还将处理 mh、IMAP 和许多其他格式,而不仅仅是 mbox。

    #!/usr/bin/perl
use warnings;
use strict;
use Mail::Box::Manager;

my $file = shift || $ENV{MAIL};
my $mgr = Mail::Box::Manager->new(
access => 'r',
);

my $folder = $mgr->open( folder => $file )
or die "$file: Unable to open: $!\n";

for my $msg ($folder->messages)
{
my $to = join( ', ', map { $_->format } $msg->to );
my $from = join( ', ', map { $_->format } $msg->from );
my $date = localtime( $msg->timestamp );
my $subject = $msg->subject;
my $body = $msg->body;

# Strip all quoted text
$body =~ s/^>.*$//msg;

print <<"";
From: $from
To: $to
Date: $date
$body

}

您可能需要重新考虑删除引用文本的请求——如果您发送的电子邮件采用交错回复格式怎么办?剥离引用的文本会使此类电子邮件很难理解:

  Foo wrote:  > I like bar.  Bar?  Who likes bar?  > It is better than baz.  Everyone knows that.  --   Quux

此外,您打算如何处理附件、非文本/纯 MIME 类型、编码文本实体和其他奇怪的东西?

关于perl - 如何使用 bash 或 Perl 重新格式化 mbox 文件中的消息?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/356763/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com