1

メール サーバーにある種のスパムレポートを実装しようとしています。メールはふるい分けされ、スパムと呼ばれる 1 つのフォルダーにまとめられます。フォルダーを bash でループします。これで、メールから必要な情報を取得します。

cat $f | grep '^From' | head -n1 >> $TMPFILE
cat $f | grep '^Subject' | head -n1 >> $TMPFILE

しかし、一部のメールでは、件名はこのようにエンコードされています

件名: =?ISO-8859-1?Q?Test:_Jaguar_XKR-S:_Unter_dem_Blech_lauert_d?=

件名を正しいエンコーディングで取得するにはどうすればよいですか? mail、mailx、mutt を使用しようとしましたが、誰もファイルから単純にメールをロードできませんでした。

4

1 に答える 1

1

件名行のエンコーディングはMIME Wordsのように見えます。データをデコードする 1 つの可能な方法は、 MIME::Wordsモジュールを使用する perl スクリプトを作成することです。perl スクリプトをシェル スクリプトにして、bash スクリプトから呼び出すことができます。

convert_subject.sh:

 #!/bin/sh
 /usr/bin/perl -pe 'use MIME::Words(decode_mimewords); $_=decode_mimewords($_);'

スクリプトの使用例:

$ echo "=?ISO-8859-1?Q?Test:_Jaguar_XKR-S:_Unter_dem_Blech_lauert_d?=" | sh convert_subject.sh

どの出力:

Test: Jaguar XKR-S: Unter dem Blech lauert d
于 2012-08-20T15:34:05.307 に答える