
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 ファイルなどの他の種類の添付ファイルも によって処理される可能性がありますimagemagick
。munpack
また、"?" が "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