1

我想知道是否有任何简单的方法可以打印多封电子邮件(大约 200 封),以便它们继续打印,而不是每页打印一封。我已经尝试过雷鸟和进化,这似乎是不可能的。连接单个邮件文件是否可行,或者是否有其他 unix 实用程序可以做到这一点?sed 或 awk 适合这个吗?

4

4 回答 4

3

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

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

cat *.eml > file.txt

或者直接打印

cat *.eml | lpr
于 2008-11-19T12:50:38.470 回答
1

Perl 使用Email::Abstract模块使它变得非常容易。给下面的脚本(maildump)一个要转储的电子邮件列表,然后将其全部通过管道传输到 lpr...

邮件转储 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;
}
于 2008-11-25T15:30:02.483 回答
0

我可以肯定地说 *n*x,但如果可以定义一个只输出文本的打印机,并将输出到一个文本文件,那么你可以将你的批次打印到该打印机并从中删除换页生成的文本文件。

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

于 2008-11-19T12:51:09.903 回答
0

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

在我的 Windows 机器上,Thunderbird 将我的收件箱存储在一个相当大的文件中

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

我不知道 *n*x 将您的存储在哪里:可能在您根目录的隐藏文件夹中。例如

/home/josh/.thunderbird

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

对于我们其他人(包括我),有很多脚本资源可以为您完成 hack 工作,同时您可以制定解决方案。如果发现是开始 Perl 的好地方。其他人可能能够建议其他语言的库。

于 2008-11-22T12:56:49.487 回答