첨부 파일의 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*"에 추가할 수 있지만 findtxt 파일과 같은 다른 유형의 첨부 파일 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

관련 정보