unix utilsで多くの電子メールファイルを連結する
質問
複数の電子メール(約200件)を印刷する簡単な方法があるかどうかを知りたいので、1ページに1つずつ印刷するのではなく、続けて送信します。私はサンダーバードと進化を試みましたが、これは不可能のようです。個々のメールファイルを連結すると機能しますか、またはこれを行うことができる他のUNIXユーティリティはありますか? WOuld sedまたはawkはこれに適していますか?
解決
メールのすべてのデータを1つのテキストファイルに入れて印刷します。
これは次のような方法で実行できます。
cat *.eml > file.txt
または直接印刷
cat *.eml | lpr
他のヒント
Perlは、メールを使用して、非常に簡単にします。 :: Abstract モジュール。次のスクリプト(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;
}
* n * xについては確かに言えますが、テキストのみを出力し、テキストファイルに出力するプリンターを定義できる場合は、そのプリンターにバッチを印刷してフォームを削除できます-結果のテキストファイルからのフィード。
Windowsで同様の手法を使用しました。Generic/ Text-Onlyドライバーを使用して新しいプリンターを作成し、出力がテキストファイルであることを指定します。その後、何でも印刷し、出力ファイルの場所を印刷ダイアログに指定し、印刷が完了したら結果をクリーンアップします。
メールをフィルタリングする場合は、データの保存場所を見つけて、そのレベルでソリューションをスクリプト化することをお勧めします。
Windowsボックスでは、Thunderbirdは受信ボックスをかなり大きなファイルに保存します
C:\ Documents and Settings \ Bruce Axtens \ Application Data \ Thunderbird \ Profiles \ x5j9chtd.default \ Mail \ Local Folders \ Inbox
* n * xがあなたのものをどこに保存するかわかりません:おそらくあなたのルートディレクトリの隠しフォルダの中に。例:
/home/josh/.thunderbird
生の電子メールデータの解析は気弱な人向けではありません( Wikipedia には良い記事がありますが正しい方向で始めるための電子メールで。)
他の人(私も含む)には、ソリューションの作成中に、ハッキング作業を行うためのスクリプトリソースがたくさんあります。 Perlの開始に適した場所として this が見つかった場合。他の人は他の言語のライブラリを提案できるかもしれません。