附件中的 Munpack 和 utf-8 檔案名

附件中的 Munpack 和 utf-8 檔案名

我還有另一個 UTF-8 問題。我用來munpack -C $extrdir $file自動從我收到的電子郵件中提取 JPG 檔案fetchmail。之後我使用bashimagemagick來處理我可以獲得的圖像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

相關內容