Имена файлов Munpack и utf-8 в прикреплениях

у меня другая проблема 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*" to find, но тогда другие типы вложений, такие как txt-файлы могут быть обработаны imagemagick как хорошо. munpack также заменяет "?"с " X", поэтому я не могу расшифровать имена файлов.

у вас есть решение этой проблемы?

спасибо заранее!

5
задан Markus
источник

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
0
отвечен Markus 2015-10-02 12:32:44
источник

Другие вопросы bash fetchmail imagemagick