Munpack und UTF-8-Dateinamen in Anhängen

Munpack und UTF-8-Dateinamen in Anhängen

ich habe ein weiteres UTF-8-Problem. Ich verwende munpack -C $extrdir $filezum automatischen Extrahieren von JPG-Dateien aus E-Mails, die ich mit erhalten habe fetchmail. Anschließend verwende ich bashund imagemagickzum Verarbeiten von Bildern, die ich mit erhalten kann find -iname "*.jpg*" -o -iname "*.jpeg*" -o -iname "*.JPEG*" -o -iname "*.JPG*". Das funktioniert für die meisten Bilder einwandfrei, solange dem Dateinamen keine Leerzeichen oder Sonderzeichen hinzugefügt werden.

Im E-Mail-Quellcode wird der Dateiname wie folgt geschrieben:

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

. munpackspeichern Sie die Datei unter

=XUTF-8XBXV2FuZGVydW5nIFNwaWVsd2VnIDIuSlBHX=

Ich könnte "*XUTF*"zu hinzufügen, aber dann könnten auch findandere Arten von Anhängen wie TXT-Dateien von verarbeitet werden . ersetzt auch „?“ durch „X“, weshalb ich die Dateinamen nicht dekodieren kann.imagemagickmunpack

Haben Sie eine Lösung für dieses Problem?

Dank im Voraus!

Antwort1

Dieser Workaround hat bei mir geholfen. Leider gehen die Dateinamen verloren. Aber das war nicht das, wonach ich suchte.

Verwenden Sie munpackdie Ausgabe und leiten Sie sie in eine Datei weiter:

munpack -C $extrdir $file > attachments

Der Inhalt der attachementsDatei wird Ihnen nun angezeigt, was extrahiert wurde:

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

Gehen Sie nun jede Zeile durch, prüfen Sie, ob es sich um Bilder handelt, und benennen Sie sie:

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

Die Ausgabe im Verzeichnis lautet dann:

attach_1.jpg
attach_2.jpg
attach_3.jpg

verwandte Informationen