Perl 是否有CPAN模块从电子邮件中提取当前级别的内容

Perl 是否有CPAN模块从电子邮件中提取当前级别的内容,perl,cpan,text-extraction,Perl,Cpan,Text Extraction,我正在寻找一个模块,尽最大努力从电子邮件的纯文本部分提取即时级别的内容(即丢弃任何引用的内容和签名块) 我们已经有了一些可以尝试的代码,因此,如果没有现有的模块可以做到这一点,那么为新模块命名的想法也会受到欢迎(Text::extractImmediateElevelofContentFromEmail似乎有点笨拙).我相信没有这样的模块,因为它非常面向任务,并且有各种各样的消息格式样式。您只需几行代码即可实现最低限度的实现: use Email::MIME; my $email = Email

我正在寻找一个模块,尽最大努力从电子邮件的纯文本部分提取即时级别的内容(即丢弃任何引用的内容和签名块)


我们已经有了一些可以尝试的代码,因此,如果没有现有的模块可以做到这一点,那么为新模块命名的想法也会受到欢迎(
Text::extractImmediateElevelofContentFromEmail
似乎有点笨拙).

我相信没有这样的模块,因为它非常面向任务,并且有各种各样的消息格式样式。您只需几行代码即可实现最低限度的实现:

use Email::MIME;
my $email = Email::MIME->new($message);
my $body;
$email->walk_parts(sub {
    my ($part) = @_;
    return unless $part->content_type =~ m[text/plain];
    $body .= $part->body;
});

# strip quoted lines and attribution line
$body =~ s/^.+ wrote:\n(?=\n* ?>)//m;
$body =~ s/^ ?>.*\n//gm;

# strip signature
$body =~ s/-- \R.+//;
当然,您可能需要添加其他启发式规则来删除以其他语言编写的属性行,以及删除Outlook样式的引用文本。 如果消息被识别为使用交叉引用样式,我建议使用一些启发式方法来避免引用文本剥离。这是因为如果你删除引用的文本,交错回复可能会失去一些意义

如果您想将其分解为一个模块,我将其称为
Email::ExtractBody
Email::ExtractText
。我要在POD中强调,该模块具有启发性和尽力而为的方法