用unix utils连接许多电子邮件文件

时间:2008-11-19 12:40:14

标签: email sed awk unix eml

我想知道是否有任何简单的方法可以打印多封电子邮件(约200张),以便继续打印,而不是每页打印一封。我试过雷鸟和进化,这似乎不可能。将各个邮件文件连接起作用还是有其他unix实用程序可以执行此操作? WOuld sed或awk是否适合这个?

4 个答案:

答案 0 :(得分:3)

为什么不将邮件中的所有数据都放在一个文本文件中并打印出来。

这可以通过以下方式完成:

cat *.eml > file.txt

或者直接用

打印
cat *.eml | lpr

答案 1 :(得分:1)

使用Email::Abstract模块,Perl变得非常简单。给下面的脚本(maildump)一个要转储的电子邮件列表,然后将它们全部导入lpr ......

maildump m1 m2 m3 m4 | LPR

#!/usr/bin/perl

use Email::Abstract;

while ($mfile = shift @ARGV)
{
    open(DATA, "<$mfile") || die "unable to open $mfile";

    my $message = do { local $/; <DATA>; };

    my $email = Email::Abstract->new($message);

    my $subject = $email->get_header("Subject");
    my $from = $email->get_header("From");
    my $date = $email->get_header("Date");
    my $body = $email->get_body;

    print "SUBJECT: $subject\nFROM: $from\nDATE: $date\n\n$body\n\n";
    print "-" x 65, "\n" if $#ARGV > 0;
}

答案 2 :(得分:0)

我可以肯定地说* n * x,但是如果可以定义只输出文本的打印机,并且输出到文本文件,那么你可以打印批次到该打印机并删除表格 - 从生成的文本文件中提供。

我在Windows中使用了类似的技术:使用Generic / Text-Only驱动程序创建一个新打印机,并指定输出是一个文本文件。然后打印任何内容,将输出文件的位置提供给打印对话框,然后在打印完成后清理结果。

答案 3 :(得分:0)

如果您想过滤电子邮件,我建议您查找数据的存储位置,并在该级别编写解决方案脚本。

在我的Windows框中,Thunderbird将我的收件箱存储在

中的一个相当大的文件中
  

C:\ Documents and Settings \ Bruce Axtens \ Application Data \ Thunderbird \ Profiles \ x5j9chtd.default \ Mail \ Local Folders \ Inbox

我不知道* n * x存储在哪里:可能在根目录中的隐藏文件夹中。 E.g。

  

/home/josh/.thunderbird

解析原始电子邮件数据不适合胆小的人(尽管Wikipedia有一篇关于电子邮件的好文章,可以帮助您从正确的方向开始。)

对于我们其他人(包括我),在您制定解决方案时,有许多脚本资源可以帮助您完成黑客工作。如果发现this是开始Perl的好地方。其他人可能会建议其他语言的库。