
我還有另一個 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