添付ファイルの Munpack と UTF-8 ファイル名

添付ファイルの Munpack と UTF-8 ファイル名

UTF-8 に関する別の問題があります。 を使用して、munpack -C $extrdir $file受信した電子メールから JPG ファイルを自動的に抽出しますfetchmail。その後、bashとを使用してimagemagick、 で取得できる画像を処理しますfind -iname "*.jpg*" -o -iname "*.jpeg*" -o -iname "*.JPEG*" -o -iname "*.JPG*"。ファイル名にスペースや特殊文字が追加されていない限り、ほとんどの画像で問題なく動作します。

電子メールのソースコードではファイル名は次のように記述されます。

Content-Disposition: attachment; filename="=?UTF-8?B?V2FuZGVydW5nIFNwaWVsd2VnIDIuSlBH?=" 

.munpackファイルを

=XUTF-8XBXV2FuZGVydW5nIFNwaWVsd2VnIDIuSlBHX=

"*XUTF*"に追加することはできますfindが、txt ファイルなどの他の種類の添付ファイルも によって処理される可能性がありますimagemagickmunpackまた、"?" が "X" に置き換えられるため、ファイル名をデコードできません。

この問題の解決策はありますか?

前もって感謝します!

答え1

この回避策でうまくいきました。残念ながら、ファイル名は失われました。しかし、それは私が求めていたものではありません。

munpack出力をファイルにパイプして使用します。

munpack -C $extrdir $file > attachments

attachements抽出されたファイルの内容が表示されます。

=XUTF-8XBXV2FuZGVydW5nTGFpdHNjaGVuYmFjaDExLkpQRw==X= (image/jpeg)
=XUTF-8XBXV2FuZGVydW5nTGFpdHNjaGVuYmFjaDE3LkpQRw==X= (image/jpeg)
...

次に、各行をループし、画像であるかどうかを確認して名前を変更します。

while read p; do
    if [[ $p == *"image"* ]]
    then
        FLNM=attach_${num}.jpg
        IFS=' (' read -a array <<< "$p"
        mv "${array[0]}" "$FLNM"
    fi
    num=$((num + 1))
done <attachements

ディレクトリ内の出力は次のようになります。

attach_1.jpg
attach_2.jpg
attach_3.jpg

関連情報