
또 다른 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