附件中的 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

相关内容