Nombres de archivos Munpack y utf-8 en archivos adjuntos

Nombres de archivos Munpack y utf-8 en archivos adjuntos

Tengo otro problema con UTF-8. Utilizo munpack -C $extrdir $filepara extraer automáticamente archivos JPG de los correos electrónicos que recibí con fetchmail. Luego uso bashy imagemagickpara procesar imágenes con las que puedo obtener find -iname "*.jpg*" -o -iname "*.jpeg*" -o -iname "*.JPEG*" -o -iname "*.JPG*". Esto funciona bien para la mayoría de las imágenes, siempre que no se agreguen espacios ni caracteres especiales al nombre del archivo.

En el código fuente del correo electrónico, el nombre del archivo se escribe como

Content-Disposition: attachment; filename="=?UTF-8?B?V2FuZGVydW5nIFNwaWVsd2VnIDIuSlBH?=" 

. munpackguardar el archivo como

=XUTF-8XBXV2FuZGVydW5nIFNwaWVsd2VnIDIuSlBHX=

Podría agregar "*XUTF*"a , pero también findse podrían procesar otros tipos de archivos adjuntos, como archivos txt . también reemplaza "?" con "X" por eso no puedo decodificar los nombres de los archivos.imagemagickmunpack

¿Tiene una solución para este problema?

¡Gracias de antemano!

Respuesta1

Esta solución lo ha hecho por mí. Desafortunadamente, los nombres de los archivos se pierden. Pero eso no era lo que buscaba.

Utilice munpacky canalice la salida en un archivo:

munpack -C $extrdir $file > attachments

El contenido del attachementsarchivo ahora verá lo que se extrajo:

=XUTF-8XBXV2FuZGVydW5nTGFpdHNjaGVuYmFjaDExLkpQRw==X= (image/jpeg)
=XUTF-8XBXV2FuZGVydW5nTGFpdHNjaGVuYmFjaDE3LkpQRw==X= (image/jpeg)
...

Ahora recorra cada una de las líneas, verifique si son imágenes y cámbieles el nombre:

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

La salida en el directorio será entonces:

attach_1.jpg
attach_2.jpg
attach_3.jpg

información relacionada