web-dev-qa-db-ja.com

添付ファイル内のMPACKおよびUTF-8ファイル名

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

電子メールでソースコードでファイル名はASに書き込まれます

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

munpackファイルを名前を付けて保存する

=XUTF-8XBXV2FuZGVydW5nIFNwaWVsd2VnIDIuSlBHX=

"*XUTF*"findに追加できましたが、TXTファイルなどの他のタイプの添付ファイルもimagemagickだけ処理される可能性があります。 munpackも "?"に置き換えますそのファイル名を復号することができないのは「X」である。

あなたはこの問題のための解決策を持っていますか?

前もって感謝します!

1
Markus

この回避策は私のためにそれをしました。残念ながら、ファイル名は失われます。しかし、それは私が後にいたことではありませんでした。

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
 _
0
Markus